gpt4 book ai didi

c# - Dispatcher.Invoke 和线程访问的问题

转载 作者:行者123 更新时间:2023-11-30 20:09:35 24 4
gpt4 key购买 nike

我试图在 C# 中处理线程,但我遇到了一个奇怪的异常,我不知道如何解决。我有一个BackgroundWorker运行的方法,其中有这段代码:

GridView gridView;
DataView dataView;

queryTable.GetViewAndDataView(out gridView, out dataView);

this.listView.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(
delegate() {
listViewView = gridView;
listView.ItemsSource = dataView;
}
));

GetViewAndDataView填充一个gridView和dataView,而委托(delegate)代码设置当前的listView。使用 Invoke 应该不会引发异常,但是当我尝试运行它时,我得到了:调用线程无法访问此对象,因为另一个线程拥有它

有谁知道如何处理此类异常,或者至少知道如何禁用拥有的线程对象?

最佳答案

消息是正确的,您不能在后台线程上创建控件并在 UI 线程上使用它们。您必须在 UI 线程上创建和分配它们。我建议先在后台线程中加载数据,然后在 UI 线程中完成其余工作

关于c# - Dispatcher.Invoke 和线程访问的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6030376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com