【问题标题】:WPF host object in new thread新线程中的 WPF 宿主对象
【发布时间】:2013-11-02 15:30:28
【问题描述】:

想托管不在gui线程中的对象,该对象的所有方法都将在这个新线程中运行。 类似的东西:

Thread thread = new Thread(() =>
{
    MyDataInstance = new MyData();
});

thread.SetApartmentState(ApartmentState.STA);
thread.Start();

但这行不通。 有什么好的方法吗?

(可以在其他线程中创建窗口,使其不可见,然后将其托管,但这似乎不是最好的解决方案)

【问题讨论】:

  • 你想达到什么目的,到底出了什么问题?你所拥有的基本上是正确的 - 但你没有说你得到了什么错误。
  • 抱歉,已编辑问题。想在这个线程中运行对象的所有方法。创建对象后,我的代码将停止。
  • 你想看this

标签: .net wpf .net-4.0 host-object


【解决方案1】:

你需要调用一个方法来做某事。您对当前代码所做的只是设置数据实例。

所以你需要这样调用一个方法:

Thread thread = new Thread(new ThreadStart(MethodThatDoesStuff)) { MyDataInstance = new MyData(); };

thread.SetApartmentState(ApartmentState.STA);
thread.Start();

MethodThatDoesStuff 必须有一个循环,以便它永远继续做某事,或者有一些其他控制机制(设置事件处理程序等)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2010-10-15
    • 2011-12-12
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多