Blog ตอนนี้ มาจากตอน Review Code แล้วผมพลาดครับ ลองดู Code ได้นะครับ
MyEvent += MyEvent_Handle1; MyEvent += MyEvent_Handle2;
จาก Code ด้านบน ผมจำผิดจริงๆ ผมมองว่า MyEvent_Handle1 ถูกแทนทีด้วย MyEvent_Handle2 เลยทวงตอน Review ไปว่า Logic ของ MyEvent_Handle1 จะหายไปครับ แต่มีโดนแย้งมา เลยมาลองทำ Snippet ลองดีกว่าครับ
using System;
public class Program
{
static event EventHandler MyEvent;
public static void Main()
{
// registering event
MyEvent += MyEvent_Handle1;
MyEvent += MyEvent_Handle2;
// invoke event
MyEvent(null, EventArgs.Empty);
}
static void MyEvent_Handle1(object sender, EventArgs e)
{
Console.WriteLine("MyEvent1 fired");
}
static void MyEvent_Handle2(object sender, EventArgs e)
{
Console.WriteLine("MyEvent2 fired");
}
}จริงด้วยครับ ทำงานทั้งคู่เลย เพราะมัน subscribe MyEvent_Handle1 และ MyEvent_Handle2 เรียบร้อยแล้วครับ ตาม https://dotnetfiddle.net/1ivM9m ครับ

ถ้าลองเกรียนๆ ยัด Event MyEvent_Handle1 หลายๆรอบ และ MyEvent_Handle2 ตาม Code หรือจะดูจาก https://dotnetfiddle.net/Dfy15h
// registering event MyEvent += MyEvent_Handle1; MyEvent += MyEvent_Handle1; MyEvent += MyEvent_Handle2; MyEvent -= MyEvent_Handle2; MyEvent += MyEvent_Handle2;
ผลลัพธ์ที่ได้
MyEvent1 fired MyEvent1 fired MyEvent2 fired
สรุป
- Operation += มันเป็นการ Subscribe Event เพิ่มเข้าไปครับ ไม่ใช่การ Assign ค่า
- Operation -= มันเป็นการ Unsubscribe Event เข้าไปครับ บางทีอาจจะกลัวเรื่อง Event เบิ๊ลหลายคนจะเขียน Code Unsubscribe และต่อด้วย Subscribe
MyEvent -= MyEvent_Handle2; MyEvent += MyEvent_Handle2;
อาจจะด้วยความมืนเบลอๆของผมเอง และไม่ได้มาแตะ Winform มานานเลยพลาดได้ครับ
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.



