[英]Async / Await in Windows Forms
我有一个带有ListView控件的主窗体,该控件包含我的域(Active Directory)中的远程计算机列表。 通过右键单击任何项目,将打开第二个窗体,其中包含WMI对象对该计算机的详细信息。 检索这些数据需要花费一些时间,因此我想打开第三种形式,只是显示“请稍候”这种信息。 这是我主要形式中的代码:
private async void cmShowDetails_Click(object sender, EventArgs e)
{
nomeComputer = lvElencoMacchine.SelectedItems[0].Text;
HamsterWheel hw = new HamsterWheel(); // create an instance of the waiting form
await Task.Run(()=> {
WorkstationDetails wdForm = new WorkstationDetails(nomeComputer, FUNZIONEFORM.VISUALIZZAZIONE);
hw.Close();
if (!wdForm.IsDisposed) wdForm.ShowDialog();
});
hw.ShowDialog();
}
我看到,一旦调用了我必须显示机器详细信息的表单的构造方法,焦点就集中在该线程上。 我想念什么?
谢谢。 戴维
您可以使用SynchronizationContext.Current
运行异步代码,这些代码最终将更新UI。
SyncronizationContext.Current.Post(d => {
'YOUR CODE HERE'
}, null);
这使您可以在UI线程上运行异步代码,这可能是您的跨线程问题所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.