在订阅事件之前取消订阅事件会发生什么。 在代码级别,它不会引发任何异常,但可以确切地说明它们处理这种情况的核心逻辑类型。
try
{
// function (which may throw exception)
doWork();
// Subscribe event
_test.MyEvent += MyEventHandler;
// other code
}
catch (Exception)
{
// do error handling
}
finally
{
// Unsubscribe event
test.MyEvent -= MyEventHandler;
}
如果doWork()函数引发异常,则最终将发生退订事件。对此,什么是解决这种情况的最佳解决方案。
在取消订阅之前,最好借助bool变量来处理这种情况。
或
可以取消订阅事件而不进行检查,因为它不会引发任何异常。