“Input string was not in a correct format ” - 可能是 Stack Overflow 上最重复的问题。
我有一个安装在全局 10,000 台 PC 上的 Windows 窗体应用程序,直到昨天我才看到这个错误。
一位用户最近报告了“输入字符串的格式不正确”错误。他正在运行 Windows 7 和 .NET 4。
让我困惑的是堆栈跟踪:
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.ComponentModel.Int32Converter.FromString(String value, NumberFormatInfo formatInfo)
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
这是整个堆栈跟踪。
即该异常似乎并非源 self 自己的任何代码。
我的问题:
谁能解释导致上述堆栈跟踪的我的代码的可能程序流程? (不显示我的任何代码)。
我仍然很困惑这怎么可能。
附加问题:
知道这个错误的可能原因吗?或者如何找到错误的真正根本原因?
我可以想到远程调试,但对我来说这似乎有点矫枉过正。
更新 1:
用户和我们的大多数客户一样,也像我一样拥有德国文化(“de-DE
”)。
最佳答案
Can anyone explain a possible program flow of my code that causes the above stack trace? (which does not show any of my code). Any idea about a possible reason for this error? Or how to get the real root cause for the error?
我们需要查看您的代码以判断它有什么问题。
为什么您的代码没有出现在堆栈中,一个可能的解释是库代码在单独的线程(或委托(delegate)?)上运行。另一个原因可能是,如果您在构建控件时在控件上设置输入验证掩码,那么当控件验证时,可能在某些用户输入事件上,您的代码都不会成为堆栈跟踪的一部分。堆栈跟踪不显示您的任何调用的原因有很多。一种通用的表达方式是当您的代码将数据传递给库代码并且库根据一些完全独立的事件(如用户输入、计时器等)对其进行操作时
我将继续的方法是寻找在控件上完成的验证掩码等内容。还要检查某个委托(delegate)上是否发生了任何数字解析类型的事情。关注用户可以在其中键入数据的控件
此外,它是发布版本还是调试版本?堆栈跟踪中的调用是否可能是优化后的?
您还可以将一些变量信息添加到您的异常转储中。 查看此帖子:How to get a dump of all local variables?
关于c# - "Input string was not in a correct format"没有有意义的堆栈跟踪的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34489090/