簡體   English   中英

顯示進度條:反過來

[英]Showing the Progressbar: the other way round

通常的做法是在UI線程中顯示進度窗口(帶進度條)並從工作線程更新進度。

我有很多長操作,它們在GUI線程本身啟動並運行(暫時凍結GUI)。 要求是顯示所有現有長操作的進度條。 通常的解決方案是將長操作作為線程移動並從那里更新進度。 但我不確定這些長期操作的線程安全性。

有沒有辦法在另一個線程中顯示進度窗口(因此它不會凍結),然后從主GUI線程本身更新進度?

我不知道在另一個線程中顯示ProgressBar的解決方案,但是你可以嘗試讓你的系統在長時間運行的操作中執行其操作(更新UI)。 為此,您可以在長時間運行的操作中重復調用以下函數:

public static void DoEvents() {
  DispatcherFrame frame = new DispatcherFrame();
  Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(delegate(object parameter) {
    frame.Continue = false;
    return null;
}), null);
  Dispatcher.PushFrame(frame);
}

但請注意,這不是解決問題的好方法。 最好選擇合適的設計。

檢查這個帖子

我認為你應該使用Application.DoEvents()

暫無
暫無

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

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