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