2

BeginInvoke只是想知道当您想要进行多个异步调用时是否有人可以澄清在某个委托的实例上的使用,因为 MSDN 文档根本没有真正涵盖/提及这一点。

我想做的是如下所示:

MyDelegate d = new MyDelegate(this.TargetMethod);
List<IAsyncResult> results = new List<IAsyncResult>();

//Start multiple asynchronous calls
for (int i = 0; i < 4; i++)
{
   results.Add(d.BeginInvoke(someParams, null, null));
}

//Wait for all my calls to finish
WaitHandle.WaitAll(results.Select(r => r.AsyncWaitHandle).ToArray());

//Process the Results

问题是我可以使用委托的一个实例来执行此操作,还是每次调用都需要一个委托的实例?

鉴于EndInvoke()将 aIAsyncResult作为参数,我会假设前者是正确的,但我在文档中看不到任何指示任何一种方式的内容。

4

1 回答 1

3

是没有问题。每次调用 BeginInvoke() 都会得到不同的 IAsyncResult。委托对象本身没有与已启动线程关联的状态。

于 2010-06-15T12:00:04.850 回答