[英]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.