gpt4 book ai didi

c# - 如何使用Tasks简化Delegate.BeginInvoke/Delegate.EndInvoke?

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:49 25 4
gpt4 key购买 nike

试图围绕 Tasks 类,更具体地说,Task.Factory.FromAsync 方法。

目前在我的代码中我正在做这样的事情:

var handler = MyEvent;

if (handler != null)
{
handler.Invoke(this, e);
}

不幸的是,这是同步的,我正在寻找异步版本。我可以使用 BeginInvoke 和 EndInvoke,但考虑到我不需要回调,这似乎有点浪费。我相信我在某处听说可以使用其中一种 Task.Factory 方法来简化此调用,这样就不需要虚拟回调了。谁能赐教一下?

最佳答案

异步调用事件处理程序有些不寻常;如果处理程序想要异步处理事件,它应该自己启动一个任务。

您可以使用 Task.Factory.StartNew Method 开始任务*:

void MyClass_MyEvent(object sender, EventArgs e)
{
Task.Factory.StartNew(() =>
{
// do work
});
}

(* 或 Async CTP 或 .NET 4.5 中的 Task.Run Method)

关于c# - 如何使用Tasks简化Delegate.BeginInvoke/Delegate.EndInvoke?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com