我遇到了多線程問題 - 我正在研究一個包含兩個窗口的框架:一個surfacwindow和一個普通的wpfwindow。在同一線程中啓動SurfaceWindow和WPF-Window
在我的第一個測試中,SurfaceWindow自動啓動,由於我的visualstudio項目選擇和我的Surface窗口的構造函數,我已經啓動了GUI。 一個線程爲Windows - >沒有問題;)
知道我必須改變順序,我的出發點是一個普通的.cs類,我有線程的困難...對我來說完美的解決方案將是首先啓動SurfaceWindow,然後再啓動WPF-Window,但是在同一個線程中。
但我不希望在SurfaceWindow的構造函數中啓動WPF窗口,但效果相同!
代碼導致穿線問題: (因爲對象被另一個線程擁有的調用線程不能訪問這個對象)
public Constructor()
{
Thread t = new Thread(new ThreadStart(StartSurfaceWIndowThread));
t.SetApartmentState(ApartmentState.STA);
t.Start();
startWindow();
}
private void StartNewStaThread() {
AdaptivePrototype.App app = new AdaptivePrototype.App();
app.InitializeComponent();
app.Run();
}
private void startWindow()
{
Thread thread = new Thread(() =>
{
WPFkGui w = new WPFGui(this);
w.Show();
System.Windows.Threading.Dispatcher.Run();
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
現在這將是完美的解決方案的代碼,但它不顯示WPFGUI:
public Constructor()
{
Thread t = new Thread(new ThreadStart(StartSurfaceWIndowThread));
t.SetApartmentState(ApartmentState.STA);
t.Start();
startWindow();
}
private void StartNewStaThread() {
AdaptivePrototype.App app = new AdaptivePrototype.App();
app.InitializeComponent();
app.Run();
WPFkGui w = new WPFGui(this);
w.Show();
}
我會很樂意提供任何幫助! 謝謝, 克里斯
再次感謝你 - 你的方法完美無缺! – 2011-06-17 14:10:47