我的对话框里有 SetTimer() 100ms执行一次//由按钮控制Set和Kill
CALLBACK static DLG::Fun()
另外在对话框init时候启动了一个线程
AfxBeginThread(Thread1,LPVOID(udp));
udp为一个udp的socket线程不端的向服务器发送信息当我按下按钮 SetTimer以后
线程的 socket 就中止向服务发送信息了是什么问题?

解决方案 »

  1.   

    pThread->m_bAutoDelete=false;
    这样呢?
      

  2.   

    线程回调和Timer函数贴出来,问题出在这两个地方,和m_bAutoDelete无关。
      

  3.   

    线程的,Timer的太多了,没发贴,100ms一次的,持续操作有循环, 是不是Timer会堵塞这个线程?
    UINT static Thread1(LPVOID lp)
    { CSocket *udp = (CSocket*)lp;
    char *rev = new char[1024];
    CString sender;
    UINT port;
    int nRev;
    CString send,Rev;
    CString strTemp,strResult="";
    char *ssss;
    char *p;
    while(true)
    {
    last = rand();
    send.Format("A%d");
    udp->SendTo(send.GetBuffer(),send.GetLength(),8888,"twin.2288.org");

    Rev="";
    nRev = udp->ReceiveFrom(rev,1024,sender,port);
    if(nRev>0)
    {
    Rev.SetString(rev,nRev);
    Rev.Trim();
    ssss=Rev.GetBufferSetLength(Rev.GetLength());
    CStringArray strArr;

    for ( p=strtok(ssss, "|"); p!=NULL; p=strtok(NULL, "|") )
    {
    strArr.Add(p);
    }
    back = strArr[0];
    deb.SetWindowText(strArr[1]);
    }
    }
    return 0;
    }
      

  4.   

    上面贴错了一个地方
    send.format(...,last);
    没贴上