【问题标题】:Check connection time out, preferable check using long elapsedTicks or DateTime elapsedTime?检查连接超时,最好使用 long elapsedTicks 或 DateTime elapsedTime 检查?
【发布时间】:2013-05-15 17:02:24
【问题描述】:

TCP服务器发送数据到缓冲区,MainForm从缓冲区接收数据并做一些处理

我有一个参数来检查缓冲区上 lastDataReceive(来自 TCP)的时间。

我还有一个参数来检查 MainForm 上 dataReceiveNow(来自缓冲区)的时间。

现在,我要计算经过的时间,如果lastDataReceive (from TCP) - dataReceiveNow (from buffer) > 60 seconds,那么会提示MessageBox.Show(" Connection Time out ");

我有两种方法,但我不知道哪一种效果最好,或者实际上两者都一样?

第一种方法:使用DateTime格式获取经过的时间,检查1秒的条件

private void CheckConnectionTimeOut()
{
    if (DateTime.Now.Subtract(receiver.LastDataReceivedTime).TotalSeconds > 60)
    {
        MessageBox.Show("Connection Out");
    }
    else
    {
        // do what ever
    }
}

方法二:通过计算elapsedTicks得到已用时间

private void CheckConnectionTimeOut()
{
    long dataTimeOut = (long)TimeSpan.FromTicks(receiver.LastDataTick - dataReceiveTickNow).TotalSeconds;

    DateTime dt = new DateTime(dataTimeOut);

    if (dt.Second > 60)
    {
        MessageBox.Show("Connection Out");
    }
    else
    { 
         // do what ever           
    }
}

【问题讨论】:

    标签: c# winforms datetime connection tcpclient


    【解决方案1】:

    这两个都不推荐,can actually be dangerous

    改为使用Stopwatch 类来测量经过的持续时间。参考documentation here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 2018-02-02
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多