簡體   English   中英

使用Notifer類在WPF表單上綁定控件

[英]Binding controls on WPF Form with a Notifer Class

我有一個帶有標簽和進度條的WPF表單。 加載表單后,下載會從遠程服務器開始,但表單會凍結並且無法正確呈現。 在我的上一篇文章中,有人建議我使用FileAsync來下載文件,但是我正在使用第三方FTP庫。 該庫確實具有DownloadFileAsync方法,但是仍然存在窗體凍結問題。

我還像這樣創建了一個DoEvents函數,但它也沒有阻止接口凍結。

private void DoEvents()
{
    Application.Current.Dispatcher.Invoke(DispatcherPriority.Background,
                                                  new Action(delegate { }));
}

我正在計划使用INotify類型的事物的另一種方法。 讓我告訴您我計划執行的步驟:

(1)將“下載文件”方法移到另一個類,例如DownloaderClass。

(2)加載MainWindow時,創建一個單獨的線程並在Downloader類中調用Download方法。

(3)創建另一個類,例如NotifierClass,作為靜態類。 此類包含以下屬性:

下載的字節數

CurrentFileName

(4) DownloaderClass中的DownloadFile方法不斷更新NotifierClass的屬性。

我想用Notifer類中的這些屬性將MainBar上的ProgressBar和幾個Label控件連接起來,以使它們保持更新。

這種方法行得通嗎? 如何使NotifierClass將狀態更新發送到MainWindow?

我正在使用VS-2010 Express。

跳過Notifier類,然后將屬性放在Download類上。 確保下載類實現INotifyPropertyChanged。

在下載方法中,您可以使用BackgroundWorker執行代碼。 如果使用Backgroundworkers ReportProgress方法和事件調用,則可以隨時更新%complete屬性,甚至在完成時在UI線程上執行代碼。

然后,您只需將您的下載類綁定到WPF表單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM