var t = new Thread(new ParameterizedThreadStart(DoWork));
t.SetApartmentState(ApartmentState.STA);
t.IsBackground = true;
t.Start(App.Current.MainWindow);
public static void DoWork(object owner)
{
var progressDlg = new ProgressBarDialog();
// progressDlg.Owner = (Window)owner; // This doesn't work
progressDlg.ShowDialog();
}
現在,請告訴我是否有可能使其工作?如何從另一個線程訪問Window?
該示例中的App.Current.MainWindow不能從其他線程訪問。
而且我也聽說過Parallel.Invoke()的新酷方法,但我不知道是否適用於這種情況。我很感激你是否告訴我它是如何工作的。
我只能假設ProgressBarDialog是某種形式的窗口,我想一個WPF窗口。您不能在一個線程中創建UI元素,並將所有者設置爲屬於不同線程的東西。 – 2010-08-05 20:45:18