问题
I use the Action<object>.BeginInvoke()
method, does this use the thread pool or not?
I have the following C# code:
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);
Is the thread pool used behind the scenes or not? Or does the system create normal threads?
回答1:
Yes this work will occur in the thread pool. This page in MSDN goes into depth on how BeginInvoke works:
http://msdn.microsoft.com/en-us/library/2e08f6yc.aspx
来源:https://stackoverflow.com/questions/442991/c-iasyncresult-and-the-thread-pool