ライブラリ クラスから一連のイベントを発生させたいのですが、一部のイベント サブスクライバーが失礼で、一部のイベントの処理に時間がかかり、イベントを発生させているスレッドがブロックされるのではないかと心配しています。スレッド プール スレッドを使用して各イベントを発生させることで、発生スレッドを保護できると考えました。
if (packet != null && DataPacketReceived != null)
{
var args = new DataPacketEventArgs(packet);
DataPacketReceived.BeginInvoke(this, args, null, null);
}
イベントのサブスクライバーが 1 つしかない場合は問題なく動作しますが、2 番目のサブスクライバーが到着するとすぐにDataPacketReceived
マルチキャスト デリゲートになり、"デリゲートにはターゲットが 1 つだけ必要です" というエラー メッセージと共に引数例外が発生します。別のスレッドでイベントを発生させる簡単な方法はありますか、またはスレッドを開始してそこからイベントを発生させる必要がありますか?