-4

プログラムの最後でイベント ハンドラの登録を解除しようとしています。このように見えます -

myobject.EventHandler -= new MyEventHandler(MyMethod);

ここで、特定の条件下で、このステートメントが複数回実行されることに気付きました。プログラムは期待どおりに動作しているようですが、おかしな動作をしていないことを確認したいと思います。

ハンドラーが初めて登録解除されると、object.EventHandler が NULL に設定されます。では、このステートメントを何回実行しても問題ないでしょうか?

ありがとう

4

2 に答える 2

1

ハンドラーが初めて登録解除されると、object.EventHandler が NULL に設定されます。では、このステートメントを何回実行しても問題ないでしょうか?

はい、大丈夫です。それは何もしません。

ところで、デリゲートを明示的に作成する必要はありません。これを行うだけで済みます。

myobject.EventHandler -= MyMethod;

(2014年にはありそうにないC#1をまだ使用していない限り...)

于 2014-09-06T13:12:00.837 に答える
1

コードが複数回実行される理由を調べる必要があるというコメントに同意しますが、一度だけ実行する必要があります。特に、実行回数が異なるためです (説明によると)。

これはasp.netからだと思いますか?その場合、一部のコントロールの autopostback プロパティに注意する必要があります。一部のイベントを発生させると、親コントロール イベントがトリガーされる可能性があります。asp.netからの場合にこれを推測している理由は、「時々」と言ったためです。したがって、ボタンやテキストボックスなどのコントロールが使用されていない場合、「通常」の動作をする可能性があります。あなたの質問には詳細がないため、これは純粋な推測にすぎませんが...

于 2014-09-06T14:33:17.593 に答える