C# Java和C中的超时#
如果这是获取Java系统“超时”的方法:C# Java和C中的超时#,c#,java,C#,Java,如果这是获取Java系统“超时”的方法: timeoutMs = System.currentTimeMillis() + DataLog.getTimeout(); try { dataLog.thread.join(DataLog.getTimeout()); } catch (InterruptedException e) {} if (!dataLog.thread.interrupted()) {
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#获取系统超时的好方法吗
这是一个大项目的一小部分,所以我不可能在输出中看到结果。请让我知道它是否正确
提前感谢…首先,如果这是暂停线程的方式(例如,在一定时间内显示对话框),那么这是一种非常糟糕的方式 也就是说,如果您使用的是秒表,只需执行以下操作即可旋转CPU:
// start the stop
var sw = Stopwatch.StartNew();
while (sw.ElapsedMilliseconds < 1000)
{
/* do nothing */
}
在C#中最接近您的代码的代码如下所示:
var timeoutMs = Environment.TickCount + DataLog.Timeout;
但是我很确定你做错了什么事。假设你想要以毫秒为单位的当前时间,然后从你的方法中添加超时,假设一个millseconds返回值:
var x = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
var timeout = DataLog.getTimeOut();
var timeoutMs = TimeSpan.FromMilliseconds(x).Add(TimeSpan.FromMilliseconds(timeout))
提供的代码没有意义。您的java代码似乎在未来计算一个时间,当您的c#代码无限期地循环调用一个方法时。实际上,我唯一想做的就是将这一行java代码转换为c#
getTimeout
方法返回什么?它返回:public static long getTimeout(){return Timeout.getDataLogTimeout();}@mk:你应该描述一下你想要完成什么。你发布的代码没有意义。如果您不描述代码的目的,就很难建议一种方法来做某事。@mk:对于更新的问题,此链接应该更合适:。这个帖子里有很多例子。谢谢,但我不明白它们的相关性!消息框和超时!
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))