1

是否可以像在 Windows 8 上的 Metro 应用程序中那样在 WinForms 中执行异步操作?

例如:

protected async void Something()
{
    await FileIO.Something();
}

在 WinForms 中拥有真的很酷。

4

2 回答 2

4

是的。

异步是 C# 5.0 语言功能,只要您具有支持的 BCL 类型(.Net 4.5 或来自 NuGet 的 Microsoft.Bcl.Async),就可以在任何地方工作。

然而,你不应该async void在任何地方写 s,除了事件处理程序。

于 2013-08-27T19:11:23.650 回答
0

是的,您可以在 winform 中使用 async-await 获取异步 UI。您必须使用 Tast.Run 方法在事件处理程序中启动异步任务,而无需等待它。要访问任何控件属性或方法,您必须使用 Control.Invoke 方法进入主线程。

最后,通过这种方法,用户界面始终处于活动状态,并且可以在之前的代码运行时处理其他事件。那么您必须编写代码以在代码运行时禁用启用按钮或其他事件处理

于 2017-05-19T18:56:33.583 回答