Подтвердить что ты не робот

Асинхронные многоадресные делегаты

В последнее время я занимаюсь некоторой работой над проектом, который широко использует события. Одна из вещей, которые мне нужно сделать, - асинхронно вызывать несколько обработчиков событий в многоадресном делетете. Я думал, что трюк будет заключаться в вызове BeginInvoke для каждого элемента из GetInvocationList, но похоже, что BeginInvoke там не существует.

Есть ли способ сделать это или мне нужно начать использовать ThreadPool.QueueUserWorkItem и как-то рулоть свое решение таким образом?

4b9b3361

Ответ 1

GetInvocationList просто возвращает массив типа Delegate, который не знает соответствующей подписи. Тем не менее, вы можете передать каждое возвращаемое значение вашему конкретному типу делегата:

foreach (MyDelegate action in multicast.GetInvocationList())
{
    action.BeginInvoke(...);
}