在.net中安全调用事件的简明方法
本文关键字:方法 事件 调用 net 安全 | 更新日期: 2023-09-27 17:52:33
是否有一种简洁的方法来安全地调用c# . net中的事件?我想安全地处理没有订阅者和订阅者可能抛出的异常…
我有点想要一个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;
只使用= 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>
作为事件的委托。