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();
}
这是一个大项目的一小部分,所以我没有可能在输出中看到结果..请让我知道它是否正确!
首先,如果这是你暂停线程的方式(例如,在一定的时间内显示一个对话框),这是一个非常糟糕的方法。
话虽这么说,如果您使用的是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))