程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 2.0的委托與匿名委托(2)

C# 2.0的委托與匿名委托(2)

編輯:關於C語言

讓我們看一個更加復雜的例子:

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);
}

這個例子中使用了系統線程池對於任務進行排隊,適合於IO或者計算密集型的操作的時候。使用匿名委托最大的好處在於可以完整地克隆當前運行空間上下文的可用變量,雖然這可能從另一個層面上也增加了同步的復雜度,所謂有得必有失。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved