posts - 13,  comments - 11,  trackbacks - 0
  这几天在做一个网络诊断的工具。用到两个线程:
  界面线程:界面是一个对话框。在对话框上有一个进度条。
  工作线程:执行检测的工作。并把对各项的检测结果以自定义消息发送给界面线程,让它呈现出来...

  我定义了一个消息:#define WM_SETPROGRESS WM_USER + 105  //设置进度条的进度
  然后每检测完一项后,用PostMessage向界面线程发送WM_SETPROGRESS消息。就出现不正常的现象。比如我已检测完一类的进度,现在想检测另一类的,所以我要重新设置一个范围(SetRange(0,100))和一个新的位置(SetPos(0)),但好像并没有执行。还是前一类检测完后的进度。

  如果在工作线程中用一个循环不断的post消息,结果只处理了一小部分的消息。即:
  [工作线程中]
        for(int i=1;i<=100;i++)
       {
               PostMessage(m_hWnd,WM_SETPROGRESS,i,0);
       }

    用SendMessage代替PostMessage,处理得更好一些。因为可以看到进度条的进度更长些,但也只显示了不到一半的进度...

  如果把对话框对象指针传递给工作线程,在那里调用SetPos,进度条就工作的很好...
posted on 2006-08-22 10:50 冰风谷 阅读(2008) 评论(2)  编辑 收藏 引用 所属分类: 存疑待解

FeedBack:
# re: 工作线程向界面线程发消息的问题
2010-08-28 19:51 | jruv
发消息到界面线程是正确的, 至于结果有问题就是你的程序写的问题了。
直接传递对话框指针来直接设置界面,是强烈不推荐的, 在很多情况下会有问题。  回复  更多评论
  
# re: 工作线程向界面线程发消息的问题
2012-07-08 18:37 | hnuzxc
@jruv 我试过了,会报错
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2008年1月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜