在后台使用非托管库时无法更新 WPF GUI

2023-12-23

我在尝试使用 Emgu 从网络摄像头捕获图像时遇到了问题。为了完成此任务,Emgu 使用非托管 opencv 库。所以问题是我无法从 System.Timers.Timer Elapsed 事件更新我的 GUI(WPF 图像控件)。我知道它在不同的线程中运行,但是嘿,这就是我使用调度程序的原因。这是我第一次用 Dispatcher 做不到。收到 InvalidOperationException 并显示“调用线程无法访问此对象,因为另一个线程拥有它。”。我花了一整天的时间寻找解决方案,但仍然无法解决。任何想法为什么会发生?

webcam.OnNewFrame += newBitmapSource => this.imgCaptured.Dispatcher.Invoke
            (
                new Action(delegate
                    {
                        this.imgCaptured.Source = newBitmapSource;
                    }),
                DispatcherPriority.Background
            );

堆栈跟踪上的最后一件事是:System.Windows.Threading.Dispatcher.VerifyAccess()

但是,如果我调用 Dispatcher.CheckAccess() 它会返回 true。

UPDATE:

最后我自己发现了:BitmapSource必须在UI线程上创建。看来它不能以其他方式使用这个对象。


您是否尝试将其设置为非后台线程。我想知道这是否是一个问题 - 从后台线程更新 UI。

另外,它表示您必须先冻结位图资源,然后再尝试在不同线程(工作线程和 UI 线程)之间共享它们。请参阅以下链接。

WPF Dispatcher {“调用线程无法访问此对象,因为另一个线程拥有它。”} https://stackoverflow.com/questions/2982498/wpf-dispatcher-the-calling-thread-cannot-access-this-object-because-a-different

http://social.msdn.microsoft.com/Forums/en-US/windowswic/thread/9223743a-e9ae-4301-b8a4-96dc2335b686 http://social.msdn.microsoft.com/Forums/en-US/windowswic/thread/9223743a-e9ae-4301-b8a4-96dc2335b686

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在后台使用非托管库时无法更新 WPF GUI 的相关文章

  • 如何创建语法突出显示文本框[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何使用 C Net 创建语法突出显示文本框 Take 闪烁网 http scintillanet codeplex com 并采取其
  • C语言实现延时函数

    我想使用空循环实现延迟函数 但是完成一次循环所需的时间取决于编译器和机器 我希望我的程序自行确定时间并将程序延迟指定的时间 谁能给我任何想法如何做到这一点 注意 有一个名为delay 的函数可以将系统暂停指定的毫秒 是否可以在不使用此功能的
  • Java 线程 JavaDoc

    我编写了一个只能在特定线程上调用的方法 是否应该将标准注释或注释添加到方法的 javadoc 中来表示这一点 不知道有任何这样的标准注释 Java 并发实践 http www javaconcurrencyinpractice com 在第
  • 带有嵌入 Flash 视频的 PDF 示例?

    有谁知道我在哪里可以查看嵌入 Flash 视频的 PDF 示例 我知道问这个问题很愚蠢 因为你会认为任何面向技术的用户都应该能够使用谷歌找到一个 但我真的找不到 我的另一个问题是 使用 C 中的 API 将 Flash 视频嵌入 PDF 文
  • 析构函数与成员函数竞赛

    当我在析构函数内时 其他线程是否可能开始执行对象的成员函数 遇到这种情况该如何处理呢 C 没有内在的保护来防止在删除对象后使用它 忘记竞争条件 另一个线程可以在完全删除你的对象后使用你的对象 Either 确保只有一个位置 代码拥有该对象
  • 为什么 ObservableCollection 有两个集合构造函数?

    The 可观察集合 T https msdn microsoft com en us library ms668604类有两个构造函数 可以在其中传递项目集合 一个构造函数接受一个IEnumerable T 另一个List T 鉴于List
  • 如何在Unity Inspector中创建多维数组?

    如何在 Unity Inspector 中创建枚举多维数组并使其可序列化 以便我可以从不同的脚本调用它 public enum colors red blue green yellow cyan white purple public in
  • 为什么我收到编译错误“使用已删除的函数 'std::unique_ptr ...”

    我收到一条巨大的编译错误消息 c mingw include c 6 1 0 bits predefined ops h 123 18 error use of deleted function std unique ptr lt Tp D
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • 编译器消息“警告:格式‘%s’需要类型‘char *’,但参数 2 具有类型‘char (*)’”

    我正在尝试运行一个简单的 C 程序 但收到此错误 警告 格式 s 需要类型 char 但参数 2 的类型为 char 20 我在跑步Mac OS X v10 8 https en wikipedia org wiki OS X Mounta
  • 使用左连接获得不适当的输出

    我正在尝试获取变体列表 并且对于每个变体都获取所有subvariants list无论子变体属于何处 特别的Test say 100 这是示例数据 Id TestId SourceSubVariantId TargetSubVariantI
  • 如何将输出重定向到 boost 日志?

    我有一个使用boost log的C 程序 我加载了用户提供的动态链接库 我想将 stderr 重定向到 boost 日志 以便用户的库随时执行以下操作 std cerr lt lt Some stuff 它产生相同的结果 BOOST LOG
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • 从 AuthorizeAttribute 继承的属性不起作用

    我目前正在尝试根据用户角色在新的 ASP MVC 5 应用程序中实现安全性 目标是防止用户在没有特定角色 或更高角色 的情况下访问某些控制器或控制器方法 根据到目前为止我所读到的问题 我创建了一个继承 AuthorizeAttribute
  • 如何为信号量中等待的线程提供优先级?

    我使用信号量来限制访问函数的线程数量 我希望接下来要唤醒的线程应该由我将给出的某个优先级选择 而不是默认信号量唤醒它们的方式 我们怎样才能做到这一点 这是实现 class MyMathUtil2 implements Runnable do
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 打印任何类型的数组和列表的通用方法[重复]

    这个问题在这里已经有答案了 每当我调试一段涉及整数 双精度 字符串等数组或列表的代码时 有时我更喜欢打印它们 我为此所做的是为不同类型编写重载的 printArray printList 方法 for e g 我可能有这 3 种方法来打印各
  • 推断“x => { throw .. }”的 Lambda 与重载方法中的 Func 匹配吗?

    我不明白为什么 C 最终在以下 LINQPad 代码中执行不正确的扩展方法 void Main Actual Sync Action Expected Sync Action Run x gt x Dump Actual Async Tas
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C

随机推荐

  • 平均特定数字的随机数

    看起来很简单 但我想要一个公式 最好是 net 对于给定的数字 比如说 1 5 公式将输出一个随机数 该数字在一系列中平均约为 1 5 所以它可能是 0 1 1 2 7 1 2 5 2 等 但平均值将接近1 5 澄清 我希望这些数字是正数
  • 在 Mobile Safari 上的 CSS 中使用右浮动时字体大小错误

    我在使用简单的 CSS 布局时遇到问题 它适用于桌面浏览器 但不适用于 iPhone 的 Mobile Safari 使用 style float right 似乎与 Mobile Safari 进行的自动字体大小调整相冲突 以下代码在桌面
  • shmget() 返回的 shmid 在进程中是否唯一?

    这是我无法真正弄清楚的事情 如果你在Linux上使用相同的密钥但在不同的进程中调用shmget 你会得到相同的shmid吗 shmid 是一个临时值 例如文件描述符编号 还是可以在调用之间保留的值 是的 您将收到相同的 shmid 共享内存
  • 如何相对于图像定位 div?

    我有一张图像 它可能会根据某些操作和我想要的几个 div 来改变其位置position on the img tag 简化后的代码如下 div img src someRandomImageUrl div foobar div div 为了
  • Symfony3:致命错误:在 .\bin\console 中找不到类“AppKernel”

    刚开始做一个项目 我跑了composer update并在尝试清除缓存时遇到异常 当我尝试跑步时php bin console server run我收到这样的消息 php bin console server run PHP Fatal
  • 在唯一约束之前清理 SQL 数据

    我想在对两列添加唯一约束之前清理表中的一些数据 CREATE TABLE test a integer NOT NULL b integer NOT NULL c integer NOT NULL CONSTRAINT a pk PRIMA
  • 与Butterknife绑定以在android中动态添加视图

    如何绑定布局中存在的视图 该布局是使用 ButterKnife 动态添加到父视图的 我有一个 LinearLayout 说容器 我有一个自定义布局 其中包含两个按钮 将此布局表示为子视图在活动中我添加了子视图成功到父LinearLayout
  • UILabel sizeToFit 仅适用于关闭自动布局的情况

    所以我正在使用 iOS 6 制作一个应用程序 并且想知道为什么我的代码曾经在 iOS 5 上运行良好 但现在不再运行了 我有一个带有动态 UILabel 的单元格 它会根据它所携带的文本进行调整 这是打开自动布局的情况 这是关闭自动布局的情
  • 使 VBE 助手在使用其他办公应用程序的功能/命令时显示

    我正在编写一些操作其他办公应用程序 office 的代码 当我编写代码时 我希望 VBE 帮助我处理属性和函数 就像它对链接到 Excel 的代码一样 这是怎么做到的 例如 当我输入 word doc 并在后面添加一个点时 我希望 VBE
  • 用于监视 FTP 服务器上的更改的批处理脚本

    我想要制作一个批处理脚本 能够侦听我的 ftp 服务器 并在每次在 ftp 服务器上上传新文件时将文件下载到我的计算机 有任何想法吗 我用的是WinSCP 您可以使用WinSCP 脚本 https winscp net eng docs s
  • WPF - 具有三列的 GridSplitter

    我有一个带有 3 列网格的应用程序 第一列和第二列之间的网格分离器工作得很好 为了使分离器位于第二列和第三列之间 我为分离器制作了一列 所以现在第三列实际上是第四列 当我调整大小时 其他列也会缩小 我认为这是因为我将它们设置为相对大小 但我
  • Golang XML:解组忽略名称空间

    我正在 Go 系统中实现一项从外部 SOAP 服务读取数据的服务 现在我正在为其编写测试 我遇到了这个问题 unable to unmarshal request body for testing expected element type
  • CALayer 优化?

    我添加了几个 CALayer 作为 UIView 层的子层 每层的内容是从服务器下载的不同图像 每个图层都从屏幕外动画到随机生成的位置 图像数据是异步下载的 每个图像大约为 300x300 或更小 由于随机放置 图层重叠 有些图层被上面的图
  • Visual Studio 2010 - 如何强制项目引用使用确切路径而不是 GAC 或程序文件?

    我们永远都会遇到这个问题 我们有很多解决方案和一个相邻的 Components 文件夹 我们要引用的所有 DLL 都在这个文件夹中 其中一些是我们从源代码构建的 以使用仅存在于组件二进制文件中的特定版本号 但是当不同计算机上的用户从 TFS
  • SQL DATE 与 java.sql.Date 中的时区

    我对 SQL DATE 数据类型与 SQL DATE 数据类型的行为感到有点困惑java sql Date 以下面的语句为例 select cast as date in most databases select cast as date
  • 收到 kotlin 错误“等待 60000 毫秒后,测试协程未完成”

    我是测试新手 试图获取第二个流量值并断言它 当我逐个运行此测试时运行良好 但是当我运行整个测试时 第一个测试运行良好 其余测试给我超时错误 Error After waiting for 60000 ms the test coroutin
  • 获取 Android .apk 文件 VersionName 或 VersionCode 而不安装 apk

    下载后 如何以编程方式从 AndroidManifest xml 文件中获取我的 apk 的版本代码或版本名称 而不安装它
  • 序列化 JavaFX 组件

    我正在尝试在 Java FX 下开发一个小型拖放应用程序 用户将按钮 菜单 标签等 JFX 组件放在某些位置 完成后 他将保存此布局 稍后他将重新打开该布局并再次使用它 存储掉落到某个位置的所有物体的信息很重要 我决定为此目的使用序列化 但
  • 在Xcode4中查找变量或方法的所有引用

    有一个类似的问题here https stackoverflow com questions 2831845 xcode view references for a variable但我无法利用 XCode 4 中的答案 我用谷歌搜索了它
  • 在后台使用非托管库时无法更新 WPF GUI

    我在尝试使用 Emgu 从网络摄像头捕获图像时遇到了问题 为了完成此任务 Emgu 使用非托管 opencv 库 所以问题是我无法从 System Timers Timer Elapsed 事件更新我的 GUI WPF 图像控件 我知道它在