我在WPF線程有問題。我想創建一個複雜的用戶界面,然後我想將它添加到我的主窗口。雖然這個複雜的用戶界面正在創建,我想在我的主窗口中顯示進度條。我認爲這隻能用線程來完成。但有一個問題。創建的元素不能添加到主窗口,因爲它是在單獨的線程中創建的。 有誰知道是否有可能將在後臺線程中創建的UIElements傳輸到主線程。 如果我嘗試一種簡單的方式,它說該對象無法訪問,因爲它在一個單獨的線程。我已經使我的進度條線程安全。在後臺創建元素線程然後添加到主界面
我希望下面的例子更好地解釋我想要的東西。
StackPanel tcForm = new StackPanel();
Semaphore loadedSema = new Semaphore(0,1);
Thread thread = new Thread(new ThreadStart(delegate(){
//Formular should be created in background
tcForm.Children.Add(new Formular());
ProgressBar.AddProgress();
//...other things
loadedSema.Release();
}));
thread.start();
loadedSema.WaitOne();
new Formular()
運行很長時間,所以我想到了在後臺創建。
也不可能將Formular
添加到變量中,然後將其添加到主線程中。
//this is also impossible
//in background-thread
form = new Formular
//in main-thread
tcForm.Children.Add(form);
我希望有一種方法可以做到這一點。 將是很好,如果有一些建議,
謝謝,馬丁
這是目前的工作方式。但是,如果使用這種方式,問題是進度條必須位於另一個窗口中。而且這個窗口不能是主窗口的子窗口。 – martin 2009-12-16 12:26:49