Интересно, может ли кто-нибудь уточнить использование 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()
принимает IAsyncResult
в качестве параметра, я бы предположил, что первый является правильным, но я не вижу ничего в документации, чтобы указать в любом случае.