问题:1.在后台线程可不可以毫无顾忌的使用MessageDlg,及ShowMessage之类的提示框?2.在后台线程中操作到主form中的控件时,使用PosMessage..
  如:
  gloLockPostMsg.Enter;
     glosWParam := ClientMacIP;
     PostMessage(Handle,WM_UPDATEUSERLOGIN,Integer(PChar(glosWParam)),Integer(PChar('')));
   gloLockPostMsg.Leave;
  
  接收WM_UPDATEUSERLOGIN消息的过程是否也在这个锁内执行..?也就是也是它们都是一个执行单位...? 3.Indy中的IdTCPServer中的这三个过程
  
  procedure TfrmMain.IdTCPServerConnect(AThread: TIdPeerThread);
  procedure TfrmMain.IdTCPServerDisconnect(AThread: TIdPeerThread);
  procedure TfrmMain.IdTCPServerExecute(AThread: TIdPeerThread);
  是不是都是多线程?也是就在这里头操作主form中的控件是否都得用同步?谢谢....

解决方案 »

  1.   

    to   foxnt(吴剑明★天马梦想): 1.注意父窗口的句柄什么呀?
    2 不一定是??到底什么时候是,什么时候不是?
    3.是阻塞方式...哎..有时会出现未响应....:(能否说清楚点呀?谢谢.....
      

  2.   

    1 窗口在Show的时候,如果父窗口不对的话,可能会出现一些窗口定位的问题,比如你showmodal,但是后面的窗口还是能点到可以动。如果出现这些问题就要自己指定父窗口了。
    2 大部分情况下不是。唯一特殊的情况就是在你离开临界区之前,你的消息就已经被处理了,那么就算是。:)