我正在使用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";
}));
}
谢谢!
答案 0 :(得分:0)
我认为你正在尝试做一些有意做的事情(请注意,调度员隐藏在知识产权之外)
编写WPF以使用数据绑定,因此您永远不必担心在UI线程上进行访问。
为此,MVVM模式应运而生,它将应用程序拆分为不同的组件。一旦你了解了这种模式,WPF就会更有意义并且更容易工作,你永远都不会(好吧,很少!)需要再次担心UI线程访问!