发送失败的时候。程序是否运行过
    catch (Exception e) 
    {         timer1.Enabled = true;  //发送失败 重开计时器              
        timer1.Start(); 
              
      } 
要是确实运行了,就不会有问题啊。
是不死因为其他原因发送失败,而你的程序是正常运行的呢。。

解决方案 »

  1.   

    跟踪时看到确实到了start()那里,但之后到了预定时间计时器并没有启动。
      

  2.   

    如一楼所说一般不会有问题。如果楼主跟踪了,发现确实执行timer.start()了。
    那就把你中间所执行的代码贴出来吧。
    时间控件在跟踪时建义最好把时间间隔设长一点。
      

  3.   

    private void OnConnectServer()  //连接服务器 

        try 
      { 
        //连接服务器成功       ---你在这里是否调用发送数据方法了    
          timer1.Stop();        //中止计时 
        timer1.Enabled = false; 
      } 
      catch (Exception e) 
        {         timer1.Enabled = true;  //连接不上就开始计时                  
            timer1.Start(); 
                  
          } 

      

  4.   


    连接成功时调用了一个用了 IAsyncResult 的方法读取服务器发送过来的即时消息,发送倒是没有
      

  5.   

    经过n次测试,发现应该是AsyncCallback这个东西引起的,timer控件在AsyncCallback里的回调函数内被关闭后,只能在外面重置,里面重置没法重新开动计时,既不计时,也没抛出异常
      

  6.   


    你个“强人”,用了Timer还用AsyncCallback来异步发生,画蛇添足了啊,Timer触发的过程本身就是异步的。
      

  7.   

    发送失败后,你是否又重新连接了服务器,如果是的话,
    发送失败在计时,连接有计时
    private void SendMsg()  

        try 
        { 
            //发送数据 
        } 
        catch (Exception e) 
        {         timer1.Enabled = true;  //发送失败 重开计时器              
            timer1.Start(); 
                  
          }   

    有可能是两个方法同时调用一个时间控件,会有问题吧?
      

  8.   

    先不说TIMER的问题。TCP连接SOCKET都要需要线程工作的。
    如果没有线程。程序会造成假死。