在工作线程中更新用户界面为什么会产生死锁? 使用AfxBeginThread建立工作线程,线程参数封装了三个指向结构的指针。其中一个指针指向封装了一个进度对话框的结构,形式为param->progress。在progress中存在一个对话框的指针,对话框中有一个CProgressCtrl控件。在线程中使用progress->SetPos()来更新进度条控制时发生死锁。内部表现为SendMessage函数无法返回。不知道为什么。100大分奉上,不成敬意:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CProgressCtrl* cwnd = (CProgressCtrl*)(param->progress);cwnd->SetPos(); 这还不简单?肯定死锁了.因为SetPos也是SendMessage.两个都在等待返回,肯定就死掉了.尽量不要在线程中直接调用指针, 这样解决:工作线程调用方法,这个方法用PostMessage给自己发消息。这样线程的调用结束就返回了。窗口线程自己处理消息。呵呵,我就这么解决的。 你的主线程是不是在等待你的工作线程的结束?如果是的话,它处于BLOCK.然后你的工作线程企图让他重画窗口,而且使用SENDMESSAGE,当然就死了 结帐,给分shesh(无所谓)与 tony1978(突击召唤师)的回答揭示出了问题产生的原因但是我面临的情况比较特殊,不能采用PostMessage的方法解决问题打算从CWinThread派生类来实现谢谢各位 float型变量送edit控件中 UDP发送和接收数据的问题? string 转换为char 数组 使用IDispEventSimpleImpl遇到的问题 非常急,,在线等。高手请进! 大侠进来帮忙看看! 完成端口的服务器性能到底有多高?好多的测试结果并非普遍情况????????? 在一个程序中同时使用CSocket和Winsock会有问题吗 再次提问:一个算法问题向大家请教,500分+1顿饭。 VC Cfile写二进制文件问题 大家的可用分一般是多少呀?我的现在4000了,散!可惜只能给一百。 新手请教关于VARIANT的数据类型的使用,请给于帮助!
cwnd->SetPos();
如果是的话,它处于BLOCK.然后你的工作线程企图让他重画窗口,而且使用SENDMESSAGE,当然就死了
shesh(无所谓)与 tony1978(突击召唤师)的回答揭示出了问题产生的原因但是我面临的情况比较特殊,不能采用PostMessage的方法解决问题
打算从CWinThread派生类来实现谢谢各位