0
我需要編寫一個只有進度條和取消按鈕的WPF程序集。這個gui必須運行在一個子線程中,這樣一個調用程序集的程序(發送進度值和檢查取消狀態)不會被阻塞。我知道如何通過Backgroundworker執行此操作,但不知道如何在子線程中運行gui並在兩個線程之間進行通信。任何幫助讚賞。SubBread中的ProgressBar
類啓動GUI線程:
public ProgressBar()
{
StartProgressWindowThread(0);
}
private void StartProgressWindowThread(int numberProgressBars)
{
progressThread = new Thread(new ParameterizedThreadStart(ThreadStartPoint));
progressThread.IsBackground = true;
progressThread.SetApartmentState(ApartmentState.STA);
progressThread.Start(numberProgressBars);
}
private void ThreadStartPoint(object args)
{
progressBarWindow = new ProgressBarWindow(args);
progressBarWindow.OnCancel += new EventHandler(CancelAction);
progressBarWindow.Show();
System.Windows.Threading.Dispatcher.Run();
}
更新: 在我從調用的類通過了NamedPipes將消息發送到GUI線程,然後調用發送的值的時刻。 gui上的取消按鈕通過代理連接。這工作正常,但我不確定NamedPipes是否是正確的選擇。
你*什麼是*能夠做的,所以,我們沒有再這樣做,你已經有了到目前爲止的工作提供代碼,具體是什麼方面的澄清你遇到麻煩的解決方案。 – Servy