[英]TimeOut in Java and C#
如果这是在Java中获取系统“超时”的方法,请执行以下操作:
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.