是否可以像在 Windows 8 上的 Metro 应用程序中那样在 WinForms 中执行异步操作?
例如:
protected async void Something()
{
await FileIO.Something();
}
在 WinForms 中拥有真的很酷。
是否可以像在 Windows 8 上的 Metro 应用程序中那样在 WinForms 中执行异步操作?
例如:
protected async void Something()
{
await FileIO.Something();
}
在 WinForms 中拥有真的很酷。
是的。
异步是 C# 5.0 语言功能,只要您具有支持的 BCL 类型(.Net 4.5 或来自 NuGet 的 Microsoft.Bcl.Async),就可以在任何地方工作。
然而,你不应该async void
在任何地方写 s,除了事件处理程序。
是的,您可以在 winform 中使用 async-await 获取异步 UI。您必须使用 Tast.Run 方法在事件处理程序中启动异步任务,而无需等待它。要访问任何控件属性或方法,您必须使用 Control.Invoke 方法进入主线程。
最后,通过这种方法,用户界面始终处于活动状态,并且可以在之前的代码运行时处理其他事件。那么您必须编写代码以在代码运行时禁用启用按钮或其他事件处理