Domanda

Uso il metodo Action<object>.BeginInvoke(), utilizza questo pool di thread o no?

Ho il seguente codice 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);

Il pool di thread viene utilizzato dietro le quinte o no? O il sistema crea thread normali?

È stato utile?

Soluzione

Sì, questo lavoro avverrà nel pool di thread. Questa pagina in MSDN approfondisce il funzionamento di BeginInvoke:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top