PreviousArticle: Ding Jie Niu-after in-depth analysis of delegation and events,Summarize the event with an interview question
Using System; Using System. Collections. Generic; Using System. LINQ; Using System. text; Using System. Threading; Namespace Callchange { Public Class Call { Static Void Main ( String [] ARGs) {messagemonitoring mm = New Messagemonitoring (); // Add the response function of the listener event Mm. onvaluechange + = New Mmeventhandle (S, e) => {Console. writeline (E. Value) ;}); mm. Run ();}} // Parameter E Public Class Mmeventargs: eventargs { Public Int Value { Get ; Set ;}} Public Delegate Void Mmeventhandle ( Object Sender, mmeventargs E ); // Information Monitoring class. When the value changes, the onvaluechange event is triggered. Public Class Messagemonitoring { Public Event Mmeventhandle onvaluechange; Private Int _ Value; Public Void Run () {thread = New Thread () => { While ( True ) {Thread. Sleep ( 1000 ); ++ Value ;}}); thread. Start ();} // Attribute change Public Int Value { Get {Return _ Value ;} Set { If (_ Value! = Value) {_ value = Value; If (Onvaluechange! = Null ) {Onvaluechange ( This , New Mmeventargs {value = _ value}) ;}}}}