TimeOut in Java and C#

本文关键字:and Java in TimeOut | 更新日期: 2023-09-27 18:01:49

如果这是在Java中获取系统"timeout"的方法:

timeoutMs = System.currentTimeMillis() + DataLog.getTimeout();
 try {
            dataLog.thread.join(DataLog.getTimeout());
        }
        catch (InterruptedException e) {}
        if (!dataLog.thread.interrupted()) {
            dataLog.thread.interrupt();
        }
        if (System.currentTimeMillis() > timeoutMs) {
            return ("Communication timeout");
        } else {
            return (dataLog.getResult());
        }
    }

下面的代码是一个很好的方法来获得系统的超时使用c# ?

Stopwatch sw = new Stopwatch();
    sw.Start();
    while (true)
    {
        timeoutMs=DataLog.getTimeout();
     }

这是一个大项目的一小部分,所以我没有可能在输出中看到结果..请让我知道它是否正确!

TimeOut in Java and C#

首先,如果这是你暂停线程的方式(例如,在一定的时间内显示一个对话框),这是一个非常糟糕的方法。

话虽这么说,如果您使用的是Stopwatch,您可以通过简单地执行以下操作来旋转CPU:

// start the stop 
var sw = Stopwatch.StartNew();
while (sw.ElapsedMilliseconds < 1000)
{
     /* do nothing */ 
}

当然,您还可以通过调用Thread.Sleep来创建暂停:

Thread.Sleep(1000);

最接近你在c#中的代码看起来像这样:

var timeoutMs = Environment.TickCount + DataLog.Timeout;

但是我很确定你一定做错了什么。

假设您想要以毫秒为单位的当前时间,然后从您的方法中添加超时,假设返回值为毫秒:

var x = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
var timeout = DataLog.getTimeOut();
var timeoutMs = TimeSpan.FromMilliseconds(x).Add(TimeSpan.FromMilliseconds(timeout))