我的應用程序使用其SDK發送請求到另一個應用程序。根據請求的大小,我的應用收到響應可能需要一段時間。如果我在UI線程中發送請求,它只是在那裏等待響應,使我的應用程序看起來沒有響應。因此,我想將請求移至BackgroundWorker,並在單獨的窗體上顯示選框樣式的ProgressBar,以用於報告正在完成的工作狀態,直至收到響應。在不使用RunWorkerCompleted事件的情況下檢查BackgroundWorker的狀態
但是使用RunWorkerCompleted事件並不可行,因爲我的應用程序根據請求的內容對收到的響應執行了許多不同的操作。
在UI線程中調用BackgroundWorker.RunWorkerAsync方法之後,我嘗試了使用Application.DoEvents的「While BackgroundWorker.IsBusy」循環,但這凍結了選框ProgressBar的動畫,因爲它一直循環直到BackgroundWorker完成。如果我在等待時讓UI線程進入睡眠狀態,這也會凍結選取框動畫。
是否有任何方法檢查BackgroundWorker的狀態,而不佔用UI線程或將其置於睡眠狀態?如果沒有,是否還有其他建議的方法顯示應用程序在等待來自其他應用程序的響應時仍在工作?我曾經在狀態表單上播放動畫,但VB.Net 2013中不再有動畫控制。
在此先感謝!
'yourWorker.ReportProgress(...)'和'yourWorker.ProgresChanged + = SomeMethod'? https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx – TyCobb