1

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           
    }
}
4

1 回答 1

0

这些都不推荐,实际上可能很危险

相反,使用一个Stopwatch类来测量经过的持续时间。参考文档在这里

于 2013-05-21T05:03:31.470 回答