是否有一种简洁的方法可以安全地调用C#.Net中的事件。我想安全地处理没有订阅者和订阅者可能抛出的例外......
我想在Delegate上使用TryInvoke方法。也可以在那里传递异常处理程序。我在.Net 3.5,所以没有扩展方法...
无论如何这里是我通常使用的样板。
void fireListChanged(List<string> paths)
{
try
{
if (ListChanged != null)
{
ListChanged(paths);
}
}
catch (System.Exception ex)
{
m_output.write(ex);
}
}
public event ListStringChangedDlgt ListChanged;
答案 0 :(得分:3)
只需使用= delegate {}
模式即可。与您的解决方案相比,奖金是线程安全的。
void fireListChanged(List<string> paths)
{
try
{
ListChanged(paths);
}
catch (System.Exception ex)
{
m_output.write(ex);
}
}
public event ListStringChangedDlgt ListChanged = delegate {};
我还建议您使用EventHandler
或EventHandler<YourEventArgClass>
作为活动的代表。