为什么这个声明+赋值会导致错误:
// Use of unassigned local variable 'handler'.
SessionEndingEventHandler handler = (sender, e) => { isShuttingDown = true; SystemEvents.SessionEnding -= handler; };
虽然这不是:
SessionEndingEventHandler handler = null;
handler = (sender, e) => { isShuttingDown = true; SystemEvents.SessionEnding -= handler; };
直观地说,第一个语句应该会导致错误,但不能立即清楚为什么第二个语句不会。
此外,我如何判断SystemEvents.SessionEnding
事件是否在调用后实际上已取消订阅handler(null, null)
?GetInvocationList
唯一适用于代表。
SystemEvents.SessionEnding += handler;
handler(null, null);