我有一個帶有標籤和進度條的WPF窗體。一旦表單被加載,下載從遠程服務器開始,但表單凍結並且不能正確呈現。在我上一篇文章中,有人建議我使用FileAsync來下載文件,但我正在使用第三方FTP庫。這個庫有DownloadFileAsync方法,但仍然存在Form凍結問題。具有Notifer類的WPF窗體上的綁定控件
我也創建了這樣的DoEvents函數,但它也不會阻止凍結界面。
private void DoEvents()
{
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
new Action(delegate { }));
}
我正在計劃使用INotify類型的東西的另一種方法。讓我告訴你我計劃要做的步驟:
(1)將下載文件方法移到另一個類,例如DownloaderClass。
(2)當MainWindow加載時,創建一個單獨的線程並調用Downloader類中的Download方法。
(3)創建另一個類,例如NotifierClass,作爲靜態類。這個類包含以下屬性:
DownloadedBytes,
CurrentFileName,
(4)的DownloadFile在DownloaderClass方法,不斷更新NotifierClass的屬性。
我想在Notifer Class中使用這些屬性連接MainWindow上的ProgressBar和幾個Label控件,以使它們更新。
這種方法行得通嗎?如何使NotifierClass將狀態更新發送到MainWindow?
我正在使用VS-2010 Express。