【发布时间】:2011-06-17 21:00:40
【问题描述】:
我遇到了多线程问题 - 我正在开发一个包含两个窗口的框架:一个 surfacwindow 和一个普通的 wpfwindow。
在我的第一次测试中,SurfaceWindow 是自动启动的,这是由于我选择了 visualstudio 项目,并且在我的 Surface Window 的构造函数中我已经启动了 GUI。 一个线程适用于两个 Windows -> 没问题 ;)
知道我必须更改顺序,我的起点是一个常见的 .cs 类,但我在线程方面遇到困难......对我来说完美的解决方案是首先启动 SurfaceWindow,然后启动 WPF-Window,但是在相同的线程。
但是我不希望WPF-Window在SurfaceWindow的Contructor中启动,但是效果一样!
导致线程问题的代码: (调用线程无法访问该对象,因为该对象由另一个线程拥有。)
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();
}
我会很高兴得到任何帮助! 谢谢, 克里斯
【问题讨论】:
标签: c# wpf multithreading pixelsense