In C# v'è alcuna differenza tra l'utilizzo di un delegato per fare qualche lavoro in modo asincrono (chiamata BeginInvoke()) e con una filettatura ThreadPool come mostrato sottoDifferenza tra delegate.BeginInvoke e utilizzando fili ThreadPool in C#
public void asynchronousWork(object num)
{
//asynchronous work to be done
Console.WriteLine(num);
}
public void test()
{
Action<object> myCustomDelegate = this.asynchronousWork;
int x = 7;
//Using Delegate
myCustomDelegate.BeginInvoke(7, null, null);
//Using Threadpool
ThreadPool.QueueUserWorkItem(new WaitCallback(asynchronousWork), 7);
Thread.Sleep(2000);
}
Modifica:
BeginInvoke si assicura che un thread dal pool di thread venga utilizzato per eseguire il codice asincrono, quindi c'è qualche differenza?
possibile duplicato del [fa Funz .BeginInvoke utilizzare il ThreadPool?] (Http://stackoverflow.com/questions/3556634/does-funct-begininvoke-use-the-threadpool) –
nothrow
Non sono sicuro se il tuo commento era prima che ho modificato la mia domanda, ma sono consapevole che BeginInvoke esegue delegati sui thread che appartengono al threadpool. La mia domanda era più se ci fosse qualche differenza tra l'esecuzione esplicita del metodo su un pool di thread utilizzando QueueUserWorkItem o usando BeginInvoke – nighthawk457