";调用线程不能访问这个对象,因为不同的线程拥有它“;和线程池
本文关键字:线程 拥有 因为 对象 不能 调用 quot 访问 | 更新日期: 2023-09-27 18:27:36
我使用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";
}));
}
谢谢!
我认为你试图做一些故意难以做的事情(请注意,调度器对智能化是隐藏的)
WPF是为处理数据绑定而编写的,因此您永远不必担心对UI线程的访问。
为此,MVVM模式应运而生,它将应用程序拆分为不同的组件。一旦你了解了这个模式,WPF就更有意义了,工作起来也更容易了,你再也不用担心UI线程访问了!