Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# DateTime中出现异常。添加_C#_.net_Exception_Datetime - Fatal编程技术网

C# DateTime中出现异常。添加

C# DateTime中出现异常。添加,c#,.net,exception,datetime,C#,.net,Exception,Datetime,使用C#,.NET 4.0更新4.0.3,Windows 7 64位: 出于超出我职责范围的原因,我不得不让GUI线程在后台处理消息时“休眠”。到目前为止,这一切都完美无缺: private void SleepWithEventLoop(int ms) { var timeout = DateTime.UtcNow.AddMilliseconds(ms); while (DateTime.UtcNow < timeout &&

使用C#,.NET 4.0更新4.0.3,Windows 7 64位:

出于超出我职责范围的原因,我不得不让GUI线程在后台处理消息时“休眠”。到目前为止,这一切都完美无缺:

    private void SleepWithEventLoop(int ms)
    {
        var timeout = DateTime.UtcNow.AddMilliseconds(ms);
        while (DateTime.UtcNow < timeout && !disposed)
        {
            System.Windows.Forms.Application.DoEvents();
            Thread.Sleep(1);
        }
    }
但它还是坠毁了。重新安装.NET也不起作用。有什么想法吗

编辑:在两个同事的PC上出现相同的问题,但在新安装的VmWare系统上没有。看起来我们公司的电脑配置有点滑稽。DateTime是否需要任何“特殊”配置


编辑2:所以我通过p调用一个小的C DLL来“修复”这个问题,该DLL公开了time.h函数,它封装在一个类似DateTime的类中。在所有项目中搜索/替换。我觉得这样做很肮脏,但它至少解决了症状。当日程安排变得不那么紧张时,我会再次研究这个问题(是的,没错)。

当我的代码在一台计算机上正常工作,而在另一台计算机上不正确工作时,我希望问题是我的应用程序正在使用DLL。所以我的建议是:

  • 在您的计算机和它工作的VM上运行应用程序
  • 在两台计算机上运行ProcessExplorer
  • 在ProcessExplorer的下部窗格中显示DLL
  • 比较DLL版本以查看哪些版本(如果有)不同

为什么要使用DoEvents()。。。。?如果您正在使用多线程,则不建议执行此操作。对不起,我不懂德语……这是一篇Stackoverflow帖子,您可以阅读,其中对不应使用应用程序的原因有很好的解释。DoEvents()@Steve:此时传递的值始终为5。只需调用DateTime.Now就会引发类似的异常,Add()调用隐藏在mscorlib中。只有DateTime.UtcNow不会抛出…您的计算机是否在玛雅日历上运行?好主意,但它是相同的DLL。看起来更像是由远程管理/病毒扫描程序/其他工具造成的错误配置或干扰,这些工具在虚拟机上不存在。。。
2012-12-18 12:50:41.204 | - None -             | Exception | Exception caught: Der hinzuzufügende Wert war außerhalb des Bereichs.
                        |                      |           | Parametername: value
                        |                      |           | Details:
                        |                      |           |    bei System.DateTime.Add(Double value, Int32 scale)
                        |                      |           |    bei System.DateTime.AddMilliseconds(Double value)
                        |                      |           |    bei com.<...>.CanOpenProxyServer.SleepWithEventLoop(Int32 ms) in C:\Users\<...>\CanOpenProxy.cs:Zeile 78.
                        |                      |           |    bei com.<...>.CanOpenProxyServer.HandleConnection(MessageChannel channel) in C:\Users\<...>\CanOpenProxy.cs:Zeile 55.
while (true) SleepWithEventLoop(5);