C #, IAsyncResult и пул потоков - PullRequest
5 голосов
/ 14 января 2009

Я использую метод 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);

Пул потоков используется за кулисами или нет? Или система создает нормальные потоки?

1 Ответ

9 голосов
/ 14 января 2009

Да, эта работа будет происходить в пуле потоков. На этой странице в MSDN подробно рассказывается, как работает BeginInvoke:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...