События C #: как обрабатывать событие параллельно

У меня есть событие, которое я хотел бы обработать параллельно. Моя идея состоит в том, чтобы сделать каждый обратный вызов добавленным в ThreadPool, effectivley должен иметь каждый метод, который зарегистрировал событие, обработанное ThreadPool.

Мой пробный код выглядит примерно так:

Delegate[] delegates = myEvent.GetInvocationList();
IAsyncResult[] results = new IAsyncResult[ delegates.Count() ];

for ( int i = 0; i < delegates.Count(); i++ )
{
    IAsyncResult result = ( ( TestDelegate )delegates[ i ] ).BeginInvoke( "BeginInvoke/EndInvoke", null, null );
    results[ i ] = result;
}

for ( int i = 0; i < delegates.Length; i++ )
{
    ( ( TestDelegate )delegates[ i ] ).EndInvoke( results[ i ] );
}

Это просто для игры, потому что мне интересно, как это сделать. Я уверен, что есть лучший способ сделать это.Я неМне нравится иметь Func, который создает WaitCallback, который содержит лямбду. Кроме того, DynamicInvoke довольно медленный по сравнению с прямым вызовом делегата. Я сомневаюсь, что этот способ обработки события быстрее, чем просто сделать это последовательно.

У меня такой вопрос: как я могу обработать событие параллельно, желательно с помощью ThreadPool?

Так как я обычно работаю с Mono, .NET 4.0 или Task Parallel Library не подходят.

Спасибо!

РЕДАКТИРОВАТЬ: - Исправленный пример благодаря ответу Earwickers. - Обновлен пробный код

Ответы на вопрос(4)

Ваш ответ на вопрос