MSDN のイベントに関するページを読んでいたところ、当惑するサンプル コードのスニペットに出会いました。
問題のコードは次のとおりです。
// Make a temporary copy of the event to avoid possibility of
// a race condition if the last subscriber unsubscribes
// immediately after the null check and before the event is raised.
EventHandler<CustomEventArgs> handler = RaiseCustomEvent;
コードの意図は理解できますが、その特定の行がどのようにコピーを作成しているのかわかりません。参照をコピーするだけです。実際には、デリゲート インスタンスのディープ コピーを作成しているわけではありません。そのため、実際には競合状態をまったく防止しません。
ここで明らかな何かが欠けていますか?