Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Java和C中的超时#_C#_Java - Fatal编程技术网

C# Java和C中的超时#

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()) {

如果这是获取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#获取系统超时的好方法吗

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


提前感谢…

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

也就是说,如果您使用的是秒表,只需执行以下操作即可旋转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))