void time()
{
    long  i=1;
while(i<=100000000)
i++;
}
这个函数是能执行3秒,但不知道是不是合适,

解决方案 »

  1.   

    你的问题在于你在循环里面发送,每次都要2秒钟,所以这个线程就一直在循环里面,接受的程序就得不到响应了。
    应该让发送的线程、接受的线程和界面的线程分开,这样在发送和接受的时候界面才不会死掉。
    至于多线程的同步问题,有很多方法的,csdn里面有很多,具体情况要看你的程序
      

  2.   


      这里怪怪的... 
          //发完一条必须返回一条所以在这里最好控制一下时间
         //发一条 2 秒,  接受一条2 秒 然后接着判断下一条   感觉发送和接收的过程似乎基本还是同步的嘛,
       
       同意楼上的观点, 主要的问题应该是放置主线程卡在发送循环里面...  
         public void StartD(){}
      本身应该是异步执行的.. 至于循环里面的延迟可以用 Sleep();
      

  3.   

    代码帮帮忙啊,你MSN和QQ多少?
      

  4.   

    发送的时候可以是线程,也可以不是.但接收的时候一定要用线程.在循环的过程中,用Application.DoEvents()刷新.如果是两秒的时间的话应该是不太难的.但对硬件来讲,2秒钟的时间好象有点太长了.如果你能用到2秒钟的时间的话,你可以用查询方式就行了.
      

  5.   

    private Thread t;
    this.t = new Thread(new ThreadStart(target));
    this.t.Start();private void target()
    {
        //  Add your codes here
    }这只是一个最简单的用法而已,具体怎么用还要看你自己了,还有,不要老是指望别人会给你写代码的
      

  6.   

    private Thread t;
    this.t = new Thread(new ThreadStart(target));
    this.t.Start();private void target()
    {
        //  Add your codes here
    }连参数都没有,不能传,就算我想别的半法传,那我接受是用委托定义的怎么办?
      

  7.   

    建立一个线程,上面很多人都写了语法了,在线程中执行循环,不会影响主界面。线程中可以用 Thread.Sleep(2000) 延迟来等待。
      

  8.   

    private Thread t;
    this.t = new Thread(new ThreadStart(StartD));
    this.t.Start();StartD
    {
      while(...)
      {
        com.send(...)
        Thread.Sleep(2000);    // Sleep 的时候,该线程阻塞,在主程序中可以做其它事;可以延时2秒多一点,确保返回的数据已经发出
        ReadCom() // 读接收的数据
      }
    }