public delegate void TheEvent(int a); public void test() { TheEvent testdel1 = new TheEvent(del1); testdel1(12); } public void del1(int x) { Console.WriteLine("output x : {0}", x); } |
public void test() { TheEvent testdel1 = del1; testdel1(12); } |
delegate void TheEvent2(int a); public void test2() { int a = 12; TheEvent ev2 = delegate(ref int x) { Console.WriteLine("output x : {0}", x); }; ev2( ref a); } |
public static void test3() { int a = 12; int y = 32; TheEvent ev2 = delegate(ref int x) { Console.WriteLine("output x + y : {0}", x + y); }; ev2( ref a); } |
public static void test4() { int a = 12; int y = 32; TheEvent ev2 = delegate(ref int x) { Console.WriteLine("output x + y : {0}", x + y); Thread.Sleep(100); }; //ev2(ref a); IAsyncResult ar = ev2.BeginInvoke(ref a, delegate(IAsyncResult ar2) {Console.Write("Operation finished: {0} on thread ID:{1}, is pool: {2}",ar2.IsCompleted,Thread.CurrentThread.GetHashCode(), Thread.CurrentThread.IsThreadPoolThread);} , null); Console.WriteLine("do some other calculations while counter thread is working"); Console.Write("work status : {0} Main Thread ID:{1}, is pool: {2}", ar.IsCompleted, Thread.CurrentThread.GetHashCode(), Thread.CurrentThread.IsThreadPoolThread); Thread.Sleep(500); ev2.EndInvoke(ref a, ar); } |