“调用线程无法访问此对象,因为不同的线程拥有它”和线程池

时间:2014-10-22 13:13:50

标签: c# .net wpf multithreading exception

我正在使用ThreadPool,以便在同一时间多次运行相同的方法。 我在MainWindow.xaml中有一个名为OUTPUT_Box的TextBox,以及一个名为HTTP_Web的类。 当我尝试从HTTP_Web.cs编辑OUTPUT_BOX.Text时,我得到了上述异常。到目前为止,解决方案很简单:

this.Dispatcher.Invoke((Action)(() =>
{
    OUTPUT_BOX.Text += "ALL OK";
}));

但是当我使用它时,没有任何反应。 整个代码:

public void ThreadsPool(string arg)
{
    ThreadPool.QueueUserWorkItem(new WaitCallback(ACTION), someargument);
}

private void ACTION(object arg)
{
//.. Some code
    this.Dispatcher.Invoke((Action)(() =>
{
    OUTPUT_BOX.Text += "ALL OK";
}));
}

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你正在尝试做一些有意做的事情(请注意,调度员隐藏在知识产权之外)

编写WPF以使用数据绑定,因此您永远不必担心在UI线程上进行访问。

为此,MVVM模式应运而生,它将应用程序拆分为不同的组件。一旦你了解了这种模式,WPF就会更有意义并且更容易工作,你永远都不会(好吧,很少!)需要再次担心UI线程访问!

相关问题