繁体   English   中英

Windows窗体中的异步

[英]Async in Windows Forms

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

例如:

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

在WinForms中真的很酷。

是。

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

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

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

最后,通过这种方法,ui保持活跃状态​​,并且可以在正常代码运行时处理其他事件。 然后你必须编写代码来在代码运行时禁用启用按钮或其他事件处理

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM