首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 2.0 匿名委派進階:非同步呼叫、執行緒池、閉包捕獲區域變數實戰

     編輯:關於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);
}

關鍵優勢

  • 利用執行緒池排隊任務,適合 I/O 或計算密集型操作
  • 匿名委派完整複製當前執行上下文的可用變數(閉包特性)
  • 雖增加同步複雜度,但極大提升程式碼表達力
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved