Posso usar o BeginInvoke com um MulticastDelegate?

Desejo gerar uma série de eventos da minha classe de biblioteca, mas estou preocupado que alguns assinantes sejam rudes e demorem muito tempo para processar alguns eventos, bloqueando assim o encadeamento que está gerando os eventos. Eu pensei que poderia proteger o segmento de elevação usando um segmento de pool de segmentos para aumentar cada evento:

if (packet != null && DataPacketReceived != null)
{
    var args = new DataPacketEventArgs(packet);
    DataPacketReceived.BeginInvoke(this, args, null, null);
}

Isso funciona bem quando há apenas um assinante no evento, mas assim que um segundo assinante chega,DataPacketReceived se torna um delegado multicast e recebo uma exceção de argumento com a mensagem de erro "O delegado deve ter apenas um destino". Existe uma maneira fácil de aumentar o evento em um thread separado, ou eu tenho que iniciar um thread e depois aumentar o evento a partir daí?

questionAnswers(1)

yourAnswerToTheQuestion