尝试围绕Tasks类,更具体地说,Task.Factory.FromAsync
方法。
目前在我的代码中我正在做这样的事情:
var handler = MyEvent;
if (handler != null)
{
handler.Invoke(this, e);
}
不幸的是,这是同步的,我正在寻找异步版本。我可以使用BeginInvoke和EndInvoke,但考虑到我不需要回调,这看起来有点浪费。我相信我听说过某个地方可以使用Task.Factory方法中的一个来简化这个调用,这样就不需要虚拟回调。谁能开导我?
答案 0 :(得分:0)
异步调用事件处理程序有点不寻常;如果处理程序想要异步处理事件,它应该自己启动一个任务。
您可以使用Task.Factory.StartNew Method *:
启动任务void MyClass_MyEvent(object sender, EventArgs e)
{
Task.Factory.StartNew(() =>
{
// do work
});
}
(*或Async CTP或.NET 4.5中的Task.Run Method)