Niedawno otrzymałem read this thread on MSDN. Tak więc myślałem o używaniu wyrażenia lambda jako sposobu na wywoływanie EndInvoke właśnie w taki sposób, aby upewnić się, że wszystko jest ładne i uporządkowane. Które byłoby bardziej poprawne?Właściwy sposób zakończenia BeginInvoke?
Przykład 1:
Action<int> method = DoSomething;
method.BeginInvoke(5, (a)=>{method.EndInvoke(a);}, null);
Przykład 2:
Action<int> method = DoSomething;
method.BeginInvoke(5, (a)=>
{
Action<int> m = a.AsyncState as Action<int>;
m.EndInvoke(a);
}, method);
I faktycznie Przeczytałem ten artykuł i wydaje się rodzajem zbędne do korzystania QueueUserWorkItem, jeśli możesz przekazać lambdę w wywołaniu BeginInvoke. –
KolejkaUserWorkItem może udostępniać inne zaawansowane funkcje zarządzania pulami wątków oprócz wywoływania funkcji EndInvoke. Preferowane jest użycie tego. – configurator
To zależy od tego, czego używasz. W środowisku IIS za pomocą ThreadPool będą używane te same wątki, które są dostępne do przetwarzania żądania. http://stackoverflow.com/questions/1453283/threadpool-in-iis-context –