"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إلغاء الاشتراك معالجات أحداث Lambda في C#؟

كيفية إلغاء الاشتراك معالجات أحداث Lambda في C#؟

نشر في 2025-03-25
تصفح:953

How to Unsubscribe Lambda Event Handlers in C#?

طريقة لإلغاء الاشتراك من معالج أحداث Lambda في C#

]]

في C#، توفر تعبيرات Lambda المجهولة وسيلة مريحة لإنشاء معالجات الأحداث. ومع ذلك ، فإن المشكلة الشائعة هي: كيفية إزالة أو إلغاء الاشتراك في معالجات الأحداث هذه.

لا تضمن مواصفات C# أن رمزين لهما نفس تعبيرات Lambda التي تنتج مندوبين متساوين. لضمان إلغاء الاشتراك الناجح ، يوصى بتخزين الحالات المفوضة بشكل صريح.

استخدم طريقة eventHandler المسماة

]

الطريقة الأكثر مباشرة هي تحديد طريقة وتعيينها كمعالج حدث:

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

...

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

تخزين المتغيرات باستخدام مندوب

]]

لإنشاء معالج أحداث تم إرجاعه باستخدام تعبير Lambda ، يمكنك استخدام متغير تخزين المندوب:

EventHandler handler = null;
handler = (sender, args) =>
{
    button.Click -= handler; // 取消订阅
    // 在此处添加仅执行一次的代码
};
button.Click  = handler;

استخدم طريقة المساعد

على الرغم من أنه لا يمكن استخدام أساليب المساعد لتغليف معالجات الأحداث بسبب قيود تمثيل الأحداث ، يمكن للمندوبين العامين توفير حلول:

button.Click  = Delegates.AutoUnsubscribe(
    (sender, args) =>
    {
        // 此处添加仅执行一次的代码
    },
    handler => button.Click -= handler);

باتباع هذه الطرق ، يمكن للمطورين إزالة معالجات أحداث Lambda بشكل فعال ، مما يضمن إدارة الحدث المناسبة والتحكم في دورة حياة الاشتراك في الحدث.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3