首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >多线程: ThreadPool和显示图像异常

多线程: ThreadPool和显示图像异常
EN

Stack Overflow用户
提问于 2014-11-04 13:13:22
回答 1查看 93关注 0票数 0

我必须在一个新的线程中显示图像序列,否则kinect会因为操作的复杂性而丢失帧。我已经尝试过了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 using (BodyFrame bodyframe = e.FrameReference.AcquireFrame())
            {
                if (bodyframe != null)
                {
                    if (this.bodies == null)
                    {
                        this.bodies = new Body[bodyframe.BodyCount];
                    }
                    //the first time getandrefreshbodydata is called, kinect will allocate each body in the array.
                    //as long as those body objects are not disposed and not set to null in the array,
                    //those body objects will be re-used.
                    bodyframe.GetAndRefreshBodyData(this.bodies);
                    dataReceived = true;
                }
                else Console.WriteLine();
            }
            BodyCustom[] bodiesCustom = deserialize(directoryTxt[frameCount]);

            sw.WriteLine("Frame " + frameCount);
            if (dataReceived)
            {
                sw.WriteLine(dataReceived);
                ThreadPool.QueueUserWorkItem(showImage, frameCount);
..............

和:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void showImage(Object frameCount)
    {

       imageReference.Source = new BitmapImage(new Uri(@directoryJpg[(int)frameCount]));
    }

但我有

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
An unhandled exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll 
Additional information: Unable to access the object from the calling thread because that object is owned by another thread.

我认为错误取决于对象imageReference,因为我在其他地方使用了它,但也通过注释它获得了这个错误。为什么?

我正在使用图像类(System.Windows.Controls)

EN

回答 1

Stack Overflow用户

发布于 2014-11-04 13:26:35

问题是你不能在后台线程上更新UI。(如果你把错误消息翻译成英语也会有帮助,我想说这里的大多数人都不懂意大利语。)

您需要重新编组到UI线程上才能更改图像。

首先,您需要存储当前的同步上下文。

这在构造函数中是最简单的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class MyObject 
{
  private SynchronizationContext CurrentSynchronizationContext;

  public MyObject()
  { 
    CurrentSynchronizationContext = System.Threading.SynchronizationContext.Current;
  }
}

接下来,在您的ThreadPool.QueueUserWorkItem操作(无论是委托还是lambda)中,添加如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public void SomeMethodThatDoesSomethingOnABackgroundThread()
{
  ThreadPool.QueueUserWorkItem(() => 
  { 
    // Do some operation that is going to take some time, or can't be done on the UI thread.
    Thread.Sleep(100000); 

    // Operation is complete, let's return the result back to the UI.
    CurrentSynchronizationContext.Post(() => 
    {
      // Change the UI, send a messagebox to the user, change the image. Whatever you need.
      // Also the return isn't necessary, it's just signifying that the method is done. 
      return; 
    },null); 
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26736043

复制
相关文章
Android 多线程: 线程池ThreadPool全方位教学
前言 对于多线程,大家应该很熟悉。但是,大家了解线程池吗? 今天,我将带大家全部学习关于线程池的所有知识。 目录 1. 简介 2. 工作原理 2.1 核心参数 线程池中有6个核心参数,具体如下 上述6个参数的配置 决定了 线程池的功能,具体设置时机 = 创建 线程池类对象时 传入 ThreadPoolExecutor类 = 线程池的真正实现类 开发者可根据不同需求 配置核心参数,从而实现自定义线程池 // 创建线程池对象如下 // 通过 构造方法 配置核心参数 Executor exe
Carson.Ho
2022/03/25
6420
Android 多线程: 线程池ThreadPool全方位教学
深入讲解java多线程与高并发:线程池ThreadPool
今天这节课呢,我们通过一道面试把前面讲的哪些基础复习一下,然后再开始线程池这部分的内容,我们一点一点来看。
愿天堂没有BUG
2022/10/28
4810
深入讲解java多线程与高并发:线程池ThreadPool
ThreadPool介绍
第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。
HLee
2021/04/19
7220
ThreadPool介绍
java中ThreadPool的介绍和使用
在Java中,threads是和系统的threads相对应的,用来处理一系列的系统资源。不管在windows和linux下面,能开启的线程个数都是有限的,如果你在java程序中无限制的创建thread,那么将会遇到无线程可创建的情况。
程序那些事
2020/07/08
1.1K0
java中ThreadPool的介绍和使用
opencv显示图像
如果说我们在些项目的过程中会频繁的查看我们的图片,我们就可以直接给它封装一个方法:
淼学派对
2023/10/14
2110
opencv显示图像
OpenCV 入门教程:图像读取和显示
在计算机视觉和图像处理领域,读取和显示图像是最基础且常见的操作之一。 OpenCV 作为一个强大的计算机视觉库,提供了丰富的功能来处理图像数据。本文将以读取和显示图像文件为中心,介绍使用 OpenCV 进行图像读取和显示的基本步骤和实例。
小蓝枣
2023/07/10
9910
OpenCV 入门教程:图像读取和显示
c#利用Halcon的图像显示控件显示图像
?
vv彭
2020/10/27
2.9K0
c#利用Halcon的图像显示控件显示图像
Android-Threadpool
     关于线程我不想再说什么,感兴趣的同学可以看我之前写过的一篇文章:Android-多线程,这里对线程有一个比较详细的解释。
android_薛之涛
2018/09/11
4450
Android-Threadpool
线程池 ThreadPool
在使用C++的经历中,经常使用多线程(计算密集型),也经常会思考要如何对多线程控制,但没有采用过线程池思想的实现。 在java并发的学习过程中,了解了Java并发组件J.U.C(java.util.concurrent),包含5个包,executor就是线程池的实现类
birdskyws
2018/09/12
9160
线程池 ThreadPool
《DRM 专栏》| LCD显示异常分析——花屏和撕裂
花屏 概述 相信很多朋友会遇到LCD开机瞬间会闪现雪花屏的问题,而这类问题都有个共同点,那就是都发生在带GRAM的屏上,同样的问题,在休眠唤醒时也会出现。 让大家能够更容易、更直观的理解这类花屏问题的原因,我特地写了这篇文章。 软件:Android 硬件:带GRAM的LCD(如SPI屏,DSI CMD屏) 现象 分析 从上面的动态图可以看出,出现瞬间花屏的问题,主要有两个原因: 背光开启的时间过早 对GRAM的写速度(W) < 对GRAM的读速度(R) 其实,只要任意解决其中一个问题,都不会出现开机闪现
刘盼
2022/06/20
3.5K0
《DRM 专栏》| LCD显示异常分析——花屏和撕裂
线程池(ThreadPool)
  线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。   例子: 10 年前单核 CPU 电脑,假的多线程,像马戏团小丑玩多个球,CPU 需要来回切换。 现在是多核电脑,多个线程各自跑在独立的 CPU 上,不用切换效率高。
别团等shy哥发育
2023/02/25
3870
线程池(ThreadPool)
Android – ThreadPool介绍
本篇内容为译文,翻译过来一起学习,一起进步 。 ThreadPool图解.png 下面将会介绍线程池、线程池使用方法以及在Android中如何使用。 ThreadPools 一个线程池管理一个工作
code_horse
2018/07/02
4910
python 并发 ThreadPool
ThreadPoolExecutor和ProcessPoolExecutor ,一个线程池,一个进程池.
py3study
2020/01/08
1.1K0
C# 多线程学习系列三之CLR线程池系列之ThreadPool
1、进程和CLR的关系 一个进程可以只包含一个CLR,也可以包含多个CLR 2、CLR和AppDomain的关系 一个CLR可以包含多个AppDomain 3、CLR和线程池的关系 一个CLR只包含一个线程池 所以得出一个CLR下的多个AppDomain共享一个线程池和一个进程下的多个CLR拥有多个线程池的结论.注:多个线程池间的线程池相互不产生影响.
郑小超.
2018/12/14
1.1K0
ThreadPool.QueueUserWorkItem 用法[通俗易懂]
ThreadPool.QueueUserWorkItem(delegate { PostDataWhenLoadData(); });
全栈程序员站长
2022/11/08
9560
图像特效显示(下)
移动是将图像看作一个整体,显示时不能像扫描那样,扫描方式有些像打开一副画,例如显示上部分的时候,下部分可以不现实,而移动则可以看成一块木板画,显示时必须按物理顺序进行,例如从上向下平移时,必须先显示下面的图像,后显示上面的图像,因此平移的算法比扫描难一些。
周旋
2022/08/07
9610
图像特效显示(下)
OpenCV基础03--创建空白图像和显示
以下程序也与以前的程序非常相似。唯一的区别是该程序创建一个空白图像,而不是从文件加载现有图像。
软件架构师Michael
2023/09/11
5260
图像特效显示(上)
准备11月份更一个新的系列,之前看的杨淑莹老师的《数字图像处理Visual Studio C++技术实现》,里面的代码都没来得及打,而且其是基于自定义的图像类实现的,这个系列就把所有例程移植为opencv-C++实现,也就是算法逻辑用C++实现,图像对象使用opencv自带的图像类。
周旋
2022/08/07
1.1K0
图像特效显示(上)
python 线程池threadpool
最近在做一个视频设备管理的项目,设备包括(摄像机,DVR,NVR等),包括设备信息补全,设备状态推送,设备流地址推送等,如果同时导入的设备数量较多,如果使用单线程进行设备检测,那么由于设备数量较多,会带来较大的延时,因此考虑多线程处理此问题。
py3study
2020/01/08
1.2K0
python线程池(threadpool)
第二行是调用makeRequests创建了要开启多线程的函数,以及函数相关参数和回调函数,其中回调函数可以不写,default是无,也就是说makeRequests只需要2个参数就可以运行;
周小董
2019/03/25
2.9K0

相似问题

ThreadPool异常

12

多线程- ThreadPool - Android

10

ThreadPool和内存(BTStackServer)异常- .NET

20

使用ThreadPool的多线程和CountdownEvent的使用

10

多线程服务,BackgroundWorker还是ThreadPool?

57
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文