小弟基于MFC编了一个多线程同步的测试程序,创建了2个子线程thread1和thread2分别进行对资源进行操作。现在需要把各个子线程操作的结果实时的显示在主线程界面的一个listbox控件上,我自己是用子线程给主线程发自定义消息的方法来做的,把主线程的窗口句柄传给这两个子线程,然后让线程需要更新数据时向界面窗口发消息,在消息处理中对界面进行更新,但是总是报错,说是内存不能为read,貌似遇到内存访问冲突的问题了,求大神们指条明路
解决方案 »
- CBrush m_brsBG(RGB(192,192,192));这句话有错吗? 新手
- [求助]该做写什么小项目来提高水准呢?
- 怎么用编辑框获得多个文件路径?
- 抓屏中 GetDIBits函数 的问题
- 系统煎切板只有一个?
- 关于CString转到TCHAR的问题! 高手请进!
- RichEdit达人请入,如何给CRichEditCtrl控件添加Tooltip~~~?100分
- 在外地的重庆人,你都知道了吗
- 关于浮动框的一个问题
- 我在打开REGEDIT时提示“注册编辑已被管理员所禁止” 怎么能把注册编辑打开呢?
- 写了一个com的Dll类//在MFC对话框程序添加TypeLib中的类怎么找不到COM的DLL类?
- 求助,出现错误“非静态成员引用必须与特定对象相对”。
使用SendMessage,首先会阻塞调用SendMessage的线程,其次,处理消息的窗口子过程被调用。直到调用完成,窗口才能继续处理后来的消息,同时SendMessage才会返回。
其次,事件同步用使用到SetEvent以及重置等操作,得理清和协调好,不然很容易出错。
SendMessage发消息给UI线程,并等待处理才能返回,同一时间UI线程只可能处理一个消息。
应该是什么地方内存读写出错了。
就是在你自定义相应的函数添加临界区保护。