工作线程向界面线程发消息的问题

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

  我定义了一个消息:#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,进度条就工作的很好...

你可能感兴趣的:(工作线程向界面线程发消息的问题)