gpt4 book ai didi

.net - TimeSpan.FromSeconds(-1.0) 和 double.NaN

转载 作者:行者123 更新时间:2023-12-04 07:09:31 25 4
gpt4 key购买 nike

我们正在构建一个 WPF 应用程序,并看到一些随机且非常奇怪的行为,这些行为似乎源自 BCL 内部。我们正在使用以下堆栈跟踪捕获未处理的异常:

[ArgumentException], 
"TimeSpan does not accept floating point Not-a-Number values."
at System.TimeSpan.Interval(Double value, Int32 scale)
at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)

现在,如果我们相信 Reflector 调用方法 (Dispatcher.Invoke) 调用
...,TimeSpan.FromSeconds(-1.0),...

这会引发 Argument 异常,因为传入的参数在 double.IsNaN 上返回 true。这显然没有任何意义,至少可以说,我们觉得这非常令人费解。

我们无法在任何较小的样本中重现此行为,因此我们正在寻找方法在我们的完整应用程序中确定此问题的原因(以及其他看似相关的 TimeSpan 异常,这些异常也会引发)。我们有很多问题希望有人可以帮助我们,因为我们在谷歌上搜索这样的事情没有运气
  • 有没有人看到过这种行为或识别出这些症状
  • 是什么导致了基础数学中这些看似随机的行为,我们是否以某种方式破坏了堆栈或堆?
  • 我们能否以某种方式在 TimeSpan.Interval 中调试 IL(也许是 WinDbg?)并打破并检查堆栈/堆以验证值?

  • 我们的应用程序的数据量很大,有大量数据被异步获取,并且有很多数据绑定(bind),但是从我们能够获得的堆栈跟踪中,我们没有看到任何确凿的证据。

    只是为了澄清这个问题:是否有人以前见过所描述的行为,识别出症状或对我们如何调试情况有意见?

    想法,评论,想法,建议?

    最佳答案

    我不确定我是否正确理解了您的问题,但我认为 -1.0 不是 NaN。

    编辑(解决实际问题):您可以下载 .NET Framework 符号并通过它们进行调试,以查看传递给 TimeSpan.FromSeconds 的变量的实际值以及其他可能发生的事情。

    关于.net - TimeSpan.FromSeconds(-1.0) 和 double.NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/610562/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com