「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > C#でラムダイベントハンドラーを登録する方法は?

C#でラムダイベントハンドラーを登録する方法は?

2025-03-25に投稿されました
ブラウズ:203

How to Unsubscribe Lambda Event Handlers in C#?

メソッドのメソッドlambdaイベントハンドラーからc#

から登録解除

C#では、匿名のLambda式がイベントハンドラーを作成する便利な方法を提供します。ただし、一般的な問題は、これらのイベントハンドラーを削除または解除する方法です。

C#仕様は、2つのコードが等しい代表者を生成する同じラムダ式を持っていることを保証するものではありません。登録解除を成功させるには、委任されたインスタンスを明示的に保存することをお勧めします。

名前付きEventhandlerメソッドを使用します

]

最も直接的な方法は、メソッドを定義し、イベントハンドラーとして割り当てることです。

public void ShowWoho(object sender, EventArgs e)
{
    MessageBox.Show("Woho");
}

...

button.Click  = ShowWoho;
...
button.Click -= ShowWoho;

Delegateを使用して変数を保存する ]

Lambda式を使用して自立したイベントハンドラーを作成するには、Delegateストレージ変数を使用できます。

eventhandler handler = null; ハンドラー=(送信者、args)=> { button.click- =ハンドラー; // unsubscribe //ここで1回だけ実行されるコードを追加します }; button.click = handler;
EventHandler handler = null;
handler = (sender, args) =>
{
    button.Click -= handler; // 取消订阅
    // 在此处添加仅执行一次的代码
};
button.Click  = handler;
helper method

を使用します ヘルパーメソッドを使用してイベント表現の制限のためにイベントハンドラーをカプセル化することはできませんが、一般的な代表者はソリューションを提供できます。

button.click = delegates.autounsubscribe ( (送信者、args)=> { // 1回だけ実行されるコードを追加します }、 Handler => button.click- =ハンドラー);

これらの方法に従うことにより、開発者はラムダイベントハンドラーを効果的に削除し、イベントのサブスクリプションライフサイクルの適切なイベント管理と制御を確保することができます。 
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3