1

TCPサーバーはバッファにデータを送信し、MainFormはバッファからデータを受信して​​何らかの処理を行います

バッファの lastDataReceive (TCP から) の時間をチェックするパラメータがあります。

また、MainForm の dataReceiveNow (バッファから) の時間を確認するパラメータもあります。

ここで、経過時間を計算したいと思います。lastDataReceive (TCP から) - dataReceiveNow (バッファーから) > 60 秒の場合、MessageBox.Show(" Connection Time out "); というメッセージが表示されます。

それを行うには2つの方法がありますが、どちらが最良の結果をもたらすかわかりませんか、実際には両方とも同じですか?

1つ目の方法: DateTime形式で経過時間を取得し、1秒の状態を確認する

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

2 番目の方法:経過時間を計算して経過時間を取得する

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 に答える