Windows窗体中的异步

本文关键字:异步 窗体 Windows | 更新日期: 2023-09-27 18:29:25

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

例如:

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

在WinForms中使用会非常酷。

Windows窗体中的异步

是。

Async是一个C#5.0语言功能,只要您有支持的BCL类型(.Net 4.5或NuGet中的Microsoft.BCL.Async),它就可以在任何地方工作。

但是,除了事件处理程序之外,永远不应该在任何地方编写async void

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

最后,通过这种方法,ui始终保持活动状态,并且可以在先前代码运行时处理其他事件。然后,当代码运行

时,您必须编写代码来禁用启用按钮或其他事件处理