在WinForms項目中,我有一個運行的算法,它不斷計算數據並更新UI。它看起來像這樣:顯示消息框但繼續異步執行
async Task BackgroundWorkAsync() {
while (true) {
var result = await Compute();
UpdateUI(result);
}
}
有時候,這取決於result
包含我想顯示MessageBox
但立即繼續運行算法。下面不起作用,因爲它會阻止進一步的處理,直到MessageBox
被駁回:
while (true) {
var result = await Compute();
UpdateUI(result);
if (...) MessageBox.Show(...); //new code
}
我怎樣才能讓MessageBox.Show
通話無阻塞?
(是的,這意味着多個消息框可能在同一時間彈出。這是確定的。)
這可能會讓用戶感到煩惱,但您可以創建一個Form並將其顯示給用戶。 –
'BackgroundWorkAsync' /'Compute'能否在後臺線程上運行? –
'BackgroundWorkAsync'在Load事件中啓動,並在UI線程上運行。我認爲''Compute'在內部做什麼並不重要。它可能存在UI依賴關係。 – boot4life