我在CListCtrl的OnPaint和工作线程中使用同一CCriticalSection锁:CMeListCtrl::OnPaint()
{
CriticalSection.Lock();
...
CriticalSection.Unlock();
}
UINT drawthumbnail()
{
CriticalSection.Lock();
LVITEM lvitem = {0};
lvitem.mask = LVIF_IMAGE|LVIF_PARAM;
GetItem(&lvitem); //运行到此就死锁 ... CriticalSection.Unlock();
}我知道GetItem是在等待CMeListCtrl响应,而CMeListCtrl正在Lock(),如果GetItem用PostMessage好像又行不通,因为不能马上获得lvitem。各位此情况该如何变通?
{
CriticalSection.Lock();
...
CriticalSection.Unlock();
}
UINT drawthumbnail()
{
CriticalSection.Lock();
LVITEM lvitem = {0};
lvitem.mask = LVIF_IMAGE|LVIF_PARAM;
GetItem(&lvitem); //运行到此就死锁 ... CriticalSection.Unlock();
}我知道GetItem是在等待CMeListCtrl响应,而CMeListCtrl正在Lock(),如果GetItem用PostMessage好像又行不通,因为不能马上获得lvitem。各位此情况该如何变通?
解决方案 »
- OnCustomDraw使用的疑问
- 对于4bit和1bit位图水平翻转问题
- opengl绘图的一个问题
- 如何只顯示一個對話框
- 为什么我的画直线效果不如微软的“画图”
- 帮忙找一下《IDL精髓》和《COM编程精彩实例》多谢
- 在VC6中,对链表的操作!编译没问题,但在运行的时候说“内存不能写”,谢谢,
- 一个网络截包的问题
- 1000分征求跳棋源代码和算法,十万火急,早到有分!
- 关于CToolTipCtrl控件的使用,在线等,解决马上给分
- VS2005,cout是把数据输出到屏幕上,我如何设置一个接口,之类的,让它显示在mfc做成的窗口上??
- 如何把一个string字符串,如2010-07-08-12-00,转换成int型数据?
-------------------
SendMessage()发送消息到主界面线程中去
{
CriticalSection.Lock();
...
CriticalSection.Unlock();
}
UINT drawthumbnail()
{
CriticalSection.Lock();
LVITEM lvitem = {0};
lvitem.mask = LVIF_IMAGE|LVIF_PARAM; pListCtrl->SendMessage(..,(LPARAM)&lvitem); CriticalSection.Unlock();
}GetItem()换成pListCtrl->SendMessage(..,(LPARAM)&lvitem);不会死锁?