5

メソッドを使用しますAction<object>.BeginInvoke()が、これはスレッドプールを使用しますか?

次の C# コードがあります。

    List<FileHash> hashList1 = hashList.Where((x, ind) => ind % 2 == 0).ToList();
    List<FileHash> hashList2 = hashList.Where((x, ind) => ind % 2 == 1).ToList();

    Action<object> oddWork = CalcHash;
    Action<object> evenWork = CalcHash;

    IAsyncResult evenHandle = evenWork.BeginInvoke(hashList1, null, null);
    IAsyncResult oddHandle = oddWork.BeginInvoke(hashList2, null, null);

    evenWork.EndInvoke(evenHandle); 
    oddWork.EndInvoke(oddHandle);

スレッドプールは舞台裏で使用されていますか? または、システムは通常のスレッドを作成しますか?

4

1 に答える 1

9

はい、この作業はスレッド プールで行われます。MSDN のこのページでは、BeginInvoke のしくみについて詳しく説明しています。

http://msdn.microsoft.com/en-us/library/2e08f6yc.aspx

于 2009-01-14T13:55:46.450 に答える