TCP服务器将数据发送到缓冲区,MainForm从缓冲区接收数据并进行处理。
我有一个参数来检查缓冲区上的lastDataReceive时间(来自TCP)。
我也有一个参数来检查dataReceiveNow (来自缓冲区)在MainForm上的时间。
现在,如果lastDataReceive (来自TCP) - dataReceiveNow (来自缓冲区)>60秒,那么它将提示MessageBox.Show(“连接超时");
我有两种方法来做,但我不知道哪一种给出最好的结果,或者实际上两者是相同的?
第一种方法:用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
}
}发布于 2013-05-21 05:03:31
这两种方法都不推荐,也不推荐可能真的很危险。
相反,使用Stopwatch类来度量经过的持续时间。参考这里的文件。
https://stackoverflow.com/questions/16661360
复制相似问题