Ответ 1
Да, эта работа будет выполняться в пуле потоков. Эта страница в MSDN подробно описывает, как работает BeginInvoke:
Я использую метод Action<object>.BeginInvoke()
, использует ли это пул потоков или нет?
У меня есть следующий код С#:
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);
Используется ли пул потоков за кулисами или нет? Или система создает нормальные потоки?
Да, эта работа будет выполняться в пуле потоков. Эта страница в MSDN подробно описывает, как работает BeginInvoke: