想要托管不在 gui 线程中的对象,该对象的所有方法都将在这个新线程中运行。像这样的东西:
Thread thread = new Thread(() =>
{
MyDataInstance = new MyData();
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
但这行不通。有什么好的方法吗?
(可以在其他线程中创建窗口,使其不可见,然后将其托管在那里,但这似乎不是最好的解决方案)
想要托管不在 gui 线程中的对象,该对象的所有方法都将在这个新线程中运行。像这样的东西:
Thread thread = new Thread(() =>
{
MyDataInstance = new MyData();
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
但这行不通。有什么好的方法吗?
(可以在其他线程中创建窗口,使其不可见,然后将其托管在那里,但这似乎不是最好的解决方案)
你需要调用一个做某事的方法。您对当前代码所做的只是设置数据实例。
所以你需要调用这样的方法:
Thread thread = new Thread(new ThreadStart(MethodThatDoesStuff)) { MyDataInstance = new MyData(); };
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
MethodThatDoesStuff
必须有一个循环,以便它永远继续做事情,或者有一些其他控制机制(设置事件处理程序等)