检查连接超时,最好使用长elapsedTicks或DateTime elapsedTime检查

本文关键字:检查 elapsedTicks elapsedTime DateTime 连接 超时 | 更新日期: 2023-09-27 18:14:25

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

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

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

现在,我想计算弹性时间,如果lastDataReceive (from TCP) - dataReceiveNow (from buffer)> 60秒,那么它将提示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           
    }
}

检查连接超时,最好使用长elapsedTicks或DateTime elapsedTime检查

这两种方法都不推荐,而且实际上可能很危险。

应该使用Stopwatch类来度量经过的持续时间。参考文档在这里