2

イベントにメソッドを追加しましたが、いくつかの条件の後、それらのイベントで実行されないようにそのメソッドを削除したいと考えています。

public MyClassConstructor()
{
    otherClassObj.OnMyDataReceived += new EventHandler(analyzeValues);
}
private void analyzeValues(object sender, EventArgs e)
{
    // finished analysis
    otherClassObj.OnMyDataReceived -= analyzeValues;
}

これはプログラムをクラッシュさせているようですが、その理由はわかりません。これは私の最初の C# プログラムです。ありがとう。

4

3 に答える 3

2

多分あなたの問題は、あなたのイベントを上げる方法ですか?最初にイベントの背後にある現在のデリゲートをローカル変数にコピーし、null を確認してから呼び出す必要があります。このような:

var omdr = OnMyDataReceived;
if (omdr != null)
    omdr(this, new EventArgs());
于 2013-04-12T18:40:11.720 に答える