这两天终于解决了一个困扰已久的问题,之前程序一直有资源泄露的问题,本来在GetDC后正常应该ReleaseDC的,但是在线程内的函数DrawDib(BYTE* pData)里面GetDC后ReleaseDC后就根本不显示东西

正确的写法是在调用绘制函数之前GetDC,再将DC传到函数内,之后再ReleaseDC

CDC* pDC = pThis->GetDC();
pThis->DrawDib(pThis->m_pImageData, pDC);
pThis->ReleaseDC(pDC);

原来的写法:

UINT CHDCamViewWnd::__DrawDib(LPVOID lpVoid)
{
    CHDCamViewWnd* pThis = (CHDCamViewWnd*)lpVoid;
    HANDLE hds[2] ={g_eventDraw , g_eventExit};
    while(1)
    {

Sleep(1);
        DWORD dwRet = WaitForMultipleObjects(2, hds, FALSE, INFINITE);
        if(dwRet == WAIT_OBJECT_0)
        {
            pThis->m_pImageData = theAppVMService.GetImageData();
            if(!pThis->m_bStopDib)
            {
                pThis->DrawDib(pThis->m_pImageData);   
            }
            
        }
        else if(dwRet == WAIT_OBJECT_0 + 1)
        {
            break;
        }
    }

return 0;
}

多线程内使用GetDC的注意问题相关推荐

  1. 异步多线程C/S框架gko_pool

    曾经在上家公司做了一个内网P2P的传输工具名曰gingko 当时太菜了,网络部分写的很差,各种阻塞式网络通信 后来离职把memcached的代码研究了一下,感觉里面的网络模型非常先进 我就把memca ...

  2. spring 多线程事务的问题

    线程不属于spring托管,故线程不能够默认使用spring的事务,也不能获取spring注入的bean 在被spring声明式事务管理的方法内开启多线程,多线程内的方法不被事务控制. 如下代码,线程 ...

  3. [Java基础] Java多线程之生活简述

    前言 1024程序员节. 今天写点干货. 在Java的多线程内, 有非常多的组成和变量. 初学时, 经常拿捏不住. 下面我们带入生活的场景, 简单的描述下Java中的各种使用场景. 多线程的基本组成 ...

  4. 聊聊这道【快手】面试题

    来自:后端技术指南针 0x00 前言 前几天大白参加了快手的视频面试,第一次使用牛客网的在线面试系统,10点开始12点才结束,一面竟然持续了两个小时,期间最开始用手机面试,20分钟简单聊完项目之后开始 ...

  5. Java 5~11各个版本新特性史上最全总结

    Java 5 Java5开发代号为Tiger(老虎),于2004-09-30发行 特性列表 泛型 枚举 自动装箱拆箱 可变参数 注解 foreach循环(增强for.for/in) 静态导入 格式化( ...

  6. boost--线程同步

    1.互斥锁(互斥量) mutex是独占式的互斥锁.timed_mutex增加了超时功能. 成员函数:lock()用于锁定,try_lock()为非阻塞版本的锁定,unlock()用于解锁.timed_ ...

  7. C# 委托(Delegate) 事件(Event)应用详解

    委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每 ...

  8. Linux性能评测工具之一:gprof篇

    这些天自己试着对项目作一些压力测试和性能优化,也对用过的测试工具作一些总结,并把相关的资料作一个汇总,以便以后信手拈来! 1 简介 改进应用程序的性能是一项非常耗时耗力的工作,但是究竟程序中是哪些函数 ...

  9. @Transactional 使用

    1 .添加位置 1)接口实现类或接口实现方法上,而不是接口类中. 2)访问权限:public 的方法才起作用.@Transactional 注解应该只被应用到 public 方法上,这是由 Sprin ...

最新文章

  1. 关于鸿蒙 2.0,那些开发者不知道的一切
  2. VMware View 5.0从菜鸟到高手系列 10 –远程图形工作站配置篇
  3. C语言数组的一些运算*a,a+1,a+1,a+0
  4. Python中多个数组行合并及列合并的方法总结
  5. 使用 remix-ide(Browser-solidity)在 Geth 上部署智能合约
  6. 我从创立3家科技公司的经历中学到了什么
  7. php序列化函数输入0存不了,php序列化函数的区别
  8. 蓝桥杯 ALGO-97 算法训练 排序
  9. 06-JavaScript的流控制语句
  10. 《现代前端技术解析》第七章读书笔记
  11. 点阵字库制作和使用(一)
  12. 发光二极管pcb封装图画法_干货 | 从焊接角度谈画PCB图时应注意的问题
  13. php jquery alert 美化,jquery插件hiAlert实现网页对话框美化_jquery
  14. 关于MSN群 创建MSN群 使用MSN群
  15. 微信小程序开源框架wxSortPickerView:微信小程序首字母排序选择表
  16. SQL2008升级SQL2008R2完全教程
  17. 自动化学科前沿讲座作业 基于深度学习的工厂人员监测系统设计
  18. 数据结构应用题大题笔记
  19. 有趣的计算机课的作文,有趣的电脑课作文400字
  20. 13/18V系列中频切换开关原理及应用方式

热门文章

  1. Linux下不能进入windows的NTFS分区之挂载错误问题(error mounting)
  2. 网上挣钱方法有哪些?这6个方法是目前最稳的!
  3. uefi版和装机版有什么区别?
  4. CSS / 圆角边框+阴影+浮动
  5. java+python课程教室自动排课系统Vue+ElemenUI
  6. (提词器)它的作用与运用
  7. vue ui组件muse-ui的使用
  8. 中南大学考研计算机水平,2017年中南大学计算机考研分数线
  9. 网络舆情分析技术 读书笔记2
  10. 【华为OD机试真题 C++】单词搜索 - 找到它游戏