C # study notes 4 (Attribute, Reflection, Thread, Thread synchronization)

zhaozj2021-02-16  48

Atributes: // can add metadata in program, It store with the program // using ILDasm to check atributes // usage [CodeReviewAttribute ( "08/08/2005", "Allan Zhang", Comment = "That is a Attribute test" )] Class Employee {}

// define target and atr [AttributeUsage (AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Interface | AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] class CodeReviewAtrribute: System.Attribute {private string reviewDate; private string reviewerName; private string reviewComments; ...} Reflections: // look the metadata in program, discory, late binding // Display attribute in Code System.Reflection.MemberInfo inf = typeof (Employee); object [] atributes = inf. GetCustomAttributes (false); foreach (object attribute in attributes) {CodeReviewAttribute attr = (CodeReviewAttribute) attribute; Console.WriteLine ( "This is code was reviewed on {0} by {1} / n Comments {2}", attr.date , Attr.name, attr.comment}} // discovery assembly asm = assembly.load ("mscorlib.dll"); type [] type = asm.gettypes (); foreach (type type in type) {console.writeline "Type is {0}, type); console.writeLine (" / n {0} types found "types.Length);} // LateBinding Type mathType = Type.GetType (". System.Math "); object obj = Activator.CreaterInstance (mathType); Type [] parameterTypes = new Type [2]; parameterTypes [ 0] = type.gettype ("system.double"); parameterTypes [1] = type.gettype ("system.double"); methodinfo powinfo = mathtype.getMethod ("Pow", parameters); object [] parameters = new Object [2]; parameters [0] = 5; parameters [1] = 3; Object ReturnValue = Powinfo.invoke (Obj, Parameters); console.writeline ("5 to the 3rd power is {0}, returnvalue);

Thread: // Create Implicit Threads using System.Threading Thread threadOne = new Thread (new ThreadStart (Countup)); Thread threadTwo = new Thread (new ThreadStart (Countup)); threadOne.Name = "Thread One"; threadTwo.Name = "Thread two"; threadOne.Start (); threadTwo.Start (); // Joining & killing Threads // join two threads in current threa threadOne.start (); threadTwo.Start (); threadOne.Join (); threadTwo .Join (); // this Will Print, After the After Two Above Two Threads Ends Console.writeline ("The Other Threads Done"); // Sleep (Millisenconds) ThreadOne.Sleep (1); threadOne.abort (); SYNCHRONIZATION: // 1 no conflict between threads interlocked.Increment (ref synchValue);.. // 2 lock method, this will block other thread when it enter into it lock (this) {int temp = synchValue; temp ; Thread.Sleep (2 ); Synchvalue = Temp; synchvalue = Temp; console.writeline ("{0} count up: {1}", thread.currentthread.name, synchvalue;}

转载请注明原文地址:https://www.9cbs.com/read-24451.html

New Post(0)