我需要在不阻塞调用方法的情况下引发事件,这样做的方法是什么?
1)启动任务并从任务中提升事件? :
//Body of listener function above
if (EventFound)
Task.Factory.StartNew(() =>
{
SendEvent();
});
2)从事件处理程序中启动任务:
public void OnEventRaised(....)
{
Task.Factory.StartNew(() =>
{
//Do lengthy stuff here
});
}
是否阻止调用函数?
答案 0 :(得分:1)
您的示例都没有阻止来电者。
在第一个示例中,调用者创建一个新线程并按顺序调用所有订阅者(如果有多个)。在第二个选项中,订阅者创建一个线程,因此每个线程都拥有它自己的线程。
请记住,如果任何事件处理程序失败,这两个选项都会使应用程序崩溃。
您可以从此处获取更多相关信息:Raising events asynchronously
答案 1 :(得分:0)