什么是父冻结?这个错误是什么意思?

2024-02-22

我收到此错误:

不能使用属于不同线程的 DependencyObject 其父类 Freezable

那有什么意思?是英文的吗?父级是冻结的,还是只是可冻结的?如果可以使错误消失,有什么方法可以使父级不可冻结吗?

发生了什么:

我的 WPF 应用程序中有两个 opengl winforms 控件,到目前为止,一切都运行顺利(我认为)。现在,我添加了一项更新,以便当一个 winform 控件更新图像时,另一个也应该更新。这实际上曾经有效,但现在我遇到了这个错误。单步执行代码会在随机位置发生崩溃,这使我相信这是垃圾收集错误(即,另一个线程中的某些更新正在创建正在被垃圾收集的内容,并且该收集是在随机时间发生的)。

该异常是在 main run 方法中捕获的,它是一个 InvalidOperationException。

我在这里抓住救命稻草。我从哪说起呢?

编辑:看起来导致问题的调用是这个:

        if (imagePanel.InvokeRequired)
        {
            imagePanel.Invoke(new System.Windows.Forms.MethodInvoker(delegate{
                imagePanel.ClearImages();
            }));
        }
        else
        {
            imagePanel.ClearImages();
        }

我仍在追踪它;如果该系列行被注释掉,崩溃仍然会发生,并且线程状态具有“刚刚结束”线程(因此是垃圾收集假设)。


好吧,我已经弄清楚了。通常,我只是删除这个问题,但找到有关如何解决此问题的任何信息很痛苦。

问题是一个如下所示的调用:

ImageBrush theBrush = new ImageBrush(new Bitmap(new Uri(...)));

if (labelStatus.Dispatcher.Thread == System.Threading.Thread.CurrentThread) {
    button.background = theBrush;
}
else {
   labelStatus.Dispatcher.BeginInvoke((System.Threading.ThreadStart)(delegate {
    button.background = theBrush;
   }));
}

但!如果你这样做,那么调度程序就会工作,然后它会尝试删除画笔,但画笔本身显然也会在另一个位置被删除。

因此,重要的教训是,如果您声明了 ImageBrush,则在同一线程中删除它,如下所示:

void MyFunc(){
     ImageBrush theBrush = new ImageBrush(new Bitmap(new Uri(...)));
     button.background = theBrush;
}

if (labelStatus.Dispatcher.Thread == System.Threading.Thread.CurrentThread) {
    MyFunc();
}
else {
   labelStatus.Dispatcher.BeginInvoke((System.Threading.ThreadStart)(delegate {
       MyFunc();
   }));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是父冻结?这个错误是什么意思? 的相关文章

  • Trace.Assert 没有中断,也不显示消息框

    我有一个 WPF 应用程序 我在其中在画布上移动数据 当我像怪物一样尝试用鼠标移动数据时 问题就开始了 以下是操作的顺序 画布上的 MouseMove 被触发 在 MouseMove 中 我更改了一些数据 Trace Assert 失败 调
  • HWND 子级的 WPF 渲染问题

    我想可以肯定地说 WPF 将其内容呈现为窗口背景 不存在传统 HWND 意义上的子窗口 因此 当人们在 WPF 应用程序中引入基于 HWND 的东西 例如 Web 浏览器 时 视觉外观方面的事情就开始出错 考虑一个窗口有一个带有两个子项的网
  • 绑定到多个索引器

    我正在尝试将索引属性与两个索引器绑定 该属性看起来像这样 public Item this int x int y get return items x y set items x y value 根据http msdn microsoft
  • 慢速 WPF 文本框

    我正在开发一个简单的串行数据查看器 它将用于观察传输到计算机串行端口之一的数据 我使用 C 和 WPF 编写了一个测试应用程序 它只是将最近读取的行放入文本块中 但是 它会跳过所有其他行 我的理论是 在 WPF 渲染窗口之前 新数据会被放入
  • 在大型数据绑定 ObservableCollection 中添加/删除许多项目,而无需冻结 GUI

    我和我的团队正在开发一个 WPF 应用程序 该应用程序显示多个并发 XamDataChart 控件 由 Infragistics 提供 每个图表都绑定到不同的 ObservableCollection 最多可包含 200 万个点 对于每个图
  • 将 KeyUp 作为参数传递 WPF 命令绑定文本框

    我有一个文本框 KeyUp 事件触发器连接到 WPF 中的命令 我需要将按下的实际键作为命令参数传递 该命令执行得很好 但处理它的代码需要知道按下的实际键 记住这可能是一个回车键或不仅仅是一个字母的任何键 所以我无法从 TextBox te
  • 类型“MyApp”已包含“MystatusBar”的定义

    我的应用程序 XAML
  • 新的 Windows 应用程序 - 什么语言?

    我们目前正处于开发 Windows 桌面应用程序的前期阶段 但当听到有关 Windows 8 Silverlight WPF Jupiter 的所有最新讨论时 我不知道该相信什么了 现在用WPF启动一个新项目是不是有问题 我应该切换到 Si
  • 使用 Visual Studio 2012 在 wpf 工具包中找不到 AutoCompleteBox

    这确实是一个想要的功能 AutoCompleteBox 显然不是 AutoCompleteComboBox 但是 Visual Studio 2012 找不到 AutoCompleteBox 控件 但我没有在早期版本的vs中尝试过 所以这可
  • 设置 TextBlock 以保留开头和结尾的空白?

    EDIT 下面的代码实际上按照我想要的方式工作 这个问题有点误导 请忽略它 通常当我设置Text的财产TextBlock像这样 TextBlock tb new TextBlock tb Text Hello World 文本开头和结尾的空
  • WPF 应用程序的最佳本地数据库解决方案是什么?

    目前适用于 WPF 应用程序的最佳解决方案是什么一台电脑 where 各种用户登录它们并使用它们在本地获取 保存信息 以下是我看到选项的方式 MDF似乎是最好的选择 因为我假设您可以很好地锁定它 这样即使用户可以访问 mdf 文件 他们仍然
  • WPF DataGridTemplateColumn 标题绑定不起作用

    我将 DataGrid 与一些手动创建的 DataGridTemplateColumns 一起使用 这是工作中的代码片段
  • WPF 无法从 url 检索 WebP 图像?

    我无法从网址检索图像 以前 在设置 HttpClient 标头之前 我根本无法连接到该站点 我可以从其他来源检索图像 但不能从这个特定来源检索图像 检索图像的代码 var img new BitmapImage img BeginInit
  • WPF XAML 绑定和 CurrentCulture 显示

    当 CurrentCulture 更改时 我发现 XAML 文档出现一些无效行为 当我在窗口中有一些这样的元素时
  • WPF MVVM 在窗口关闭时调用 ViewModel Save 方法

    我已经弄清楚如何从我的 ViewModel 关闭窗口 现在我需要从另一侧解决窗口关闭问题 当用户单击窗口的关闭按钮时 我需要在 ViewModel 中触发 Save 方法 我正在考虑将 Command 属性绑定到 Window 的关闭事件
  • 优化 WPF 中由单元格组成的网格以获得最短路径

    我目前正在尝试在 WPF 中制作一个由 Cell 对象组成的网格 我需要将单元格绑定到对象 该对象需要位于二维数组中 我需要它很大 可扩展 并改变单元格的颜色并将数据存储在对象中 我已经实现了 但是绘制网格似乎很慢 100x100 网格需要
  • 需要帮助处理 Application.xaml 文件中的 DataTemplate 事件

    我的应用程序中有一个包含几个按钮的数据模板 我希望这些按钮的偶数处理程序在当前页面 我在许多页面中使用此模板 而不是在 Application xaml vb cs 文件中触发 因为我希望在每个页面上执行不同的操作 我希望我说清楚了 您可以
  • 我对 MVVM 模式有一些疑问

    我叫 Jes s 来自西班牙 是一名 NET 开发人员 几天前我刚刚发现了这个伟大的网络 我有一些关于 MVVM 模式的问题 如果您能回答我 我将很高兴 我三个月前开始使用 WPF 并且学习了 MVP 模式 MVP 非常好 因为您可以很好地
  • 在代码中而不是 XAML 中呈现 UserControl

    我想用RenderTargetBitmap将 UserControl 呈现为位图 而无需为其编写 XAML 当我这样做时 我得到一张空白图像 我是否错过了关键的一步 ValTool Controls VideoFisheyeOverlayC
  • 如何向 ItemsControl 中的 WPF 按钮添加相同的命令

    如何将命令添加到 wpf 按钮 该按钮是ItemsControl并正在修改ItemsSource itself 这是我的 XAML

随机推荐

  • Java:catch 块可以是多态的吗?

    在我要复习的一篇论文中 我被问到 catch 块可以是多态的吗 如果属实 那么对我来说调用多个就没有意义catch块多态性 是否是多态性如果catch块无法命名并且仅在其方法头中包含参数 例如 try catch FileNotFoundE
  • Heroku 指南针 buildpack 指南针失败

    我正在尝试将指南针构建包推送到heroku服务器 https github com stephanmelzer heroku buildpack nodejs grunt compass https github com stephanme
  • 如何删除 json_encode() 函数上的反斜杠?

    如何去除 字符串上的反斜杠 使用时echo json encode 例如 注意 当你 echo str 时 不会有问题 但是当你 echo out 使用json encode the 反斜杠将会出现 有办法解决这个问题吗 json enco
  • 在 MongoLab 上运行的 MongoDB 中的日期语法是什么?

    对象 ID 不是 ObjectId 82he921he982he82 而是 id oid 82he921he982he82 但我不知道如何在 MongoLab 上的文档中创建日期值 s 如果您使用其中一个驱动程序 则可以通过该语言的 Dat
  • 如何在 iOS 中引用刚刚拍摄的照片?

    我正在编写一个应用程序 允许用户拍照然后在图像视图中显示它 我知道我需要编写一行类似于以下内容的代码 imageView image picker image 但我不确定我需要用什么来代替picker image 这就是我目前所拥有的 它给
  • 我们可以强制函数在c++中内联吗

    一般来说 inline关键字只是对编译器的一个请求 编译器会根据函数的实现来决定是否进行内联扩展 但是有什么方法可以强制函数内联吗 我们该怎么做呢 这完全依赖于编译器 一些编译器提供了执行您想要的操作的方法 For gcc看一眼this h
  • UnitTesting Android TabActivity 时出现 Nullpointer 异常

    我目前正在对示例 TabLayout 进行单元测试安卓网站 http developer android com resources tutorials views hello tabwidget html 我在进行单元测试时遇到 Null
  • Angular Material Snackbar 更改颜色

    我正在使用 Angular 7 和 Material Snackbar 我想将 Snackbar 的颜色更改为绿色 在 app component ts 中 我有 this snackBarRef this snackBar open re
  • Erlang:元组列表转换为 JSON

    我有一个元组列表 它们是 http 标头 我想将列表转换为 JSON 对象 我尝试 mochijson2 但无济于事 所以我有以下内容 Accept text html application xhtml xml application x
  • Savon—配置为使用 TLS 1.2

    我正在开发一个使用 Savon 连接到 SalesForce api 的旧项目 我收到此错误 UNSUPPORTED CLIENT TLS 1 0 has been disabled in this organization Please
  • oracle plsql:如何解析XML并插入到表中

    如何将嵌套的 xml 文件加载到数据库表中
  • Parallel.ForEach 与 foreach 的指导原则是什么?

    我很好奇 Parallel ForEach 的性能特征 给定 Parallel ForEach 循环内的任何有效构造 使用 Parallel ForEach 是否总是比 foreach 循环更可取 我特别想知道在小型集合或 foreach
  • 当只有 1 个实例时,Snowflake XML 解析不适​​用于嵌套结构

    我们在 Snowflake 中有一个名为 portfolio 的临时表 其中有一个名为 cdc xml 的 Variant 列 用于存储 Snowpipe 通过 S3 加载的 XML 文档 XML 看起来像
  • 更改表单不透明度而不更改容器控件的不透明度

    是否有可能 与Windows 窗体 http en wikipedia org wiki Windows Forms在 NET中 要更改表单的不透明度而不自动更改表单内控件的不透明度 我有一个正在最大化运行的表单 其中在表单中心包含一个 f
  • 发生 Java UUID.randomUUID 冲突的机会有多大? [复制]

    这个问题在这里已经有答案了 我需要在 Java 中创建一些唯一文件 并且我计划使用 UUID randomUUID 来生成它们的名称 有可能因此发生碰撞吗 我应该做类似下面的事情吗 我不应该担心这个 Integer attemptsToGe
  • iPhone/iPad 应用程序使用键盘快捷键?

    随着 iPad 和 iPhone 键盘的推出 现在向应用程序添加键盘快捷键是有意义的 可以在应用程序中执行此操作吗 相关API有哪些 虽然这个问题相当老了 但 Apple 在 iOS 7 中添加了对键盘特定快捷键的支持 查看UIKeyCom
  • Spring jdbctemplate批量更新快速替代方案

    我正在尝试使用 Spring JDBC 模板批量更新将大约 5000 个值插入到 MySql 表中 如下所示 http www mkyong com spring spring jdbctemplate batchupdate exampl
  • 在Windows服务中使用MFC?

    我开始开发 Windows 服务 我想使用我自己的一些类 它们对某些 MFC 类 如 CString CSocket CArchive CMemFile 和 CObject 几乎没有依赖性 MSDN http msdn microsoft
  • 在 numpy 中查找对角线和(更快)

    我有一些board像这样的 numpy 数组 array 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
  • 什么是父冻结?这个错误是什么意思?

    我收到此错误 不能使用属于不同线程的 DependencyObject 其父类 Freezable 那有什么意思 是英文的吗 父级是冻结的 还是只是可冻结的 如果可以使错误消失 有什么方法可以使父级不可冻结吗 发生了什么 我的 WPF 应用