我正在清理一些旧代码,将其转换为异步工作。
psDelegate.GetStops decStops = psLoadRetrieve.GetLoadStopsByLoadID;
var arStops = decStops.BeginInvoke(loadID, null, null);
WaitHandle.WaitAll(new WaitHandle[] { arStops.AsyncWaitHandle });
var stops = decStops.EndInvoke(arStops);
以下是我在异步工作方面所做的单个示例。我的计划是运行近20个不同的委托。它们都将调用
BeginInvoke
并等待直到所有委托完成后再调用EndInvoke
。我的问题是,运行这么多委托会导致问题吗?我知道
BeginInvoke
使用线程池来执行任务,而线程池有25个线程的限制。虽然20个委托在此限制之下,但系统的其他部分也可能使用线程池中的任意数量线程。谢谢!