我在C#中编写了一个编程的工具,其可执行文件在许多用户之间共享。
在某些PC上,我发现 - 特定变量被清除(即List被自己清除);这导致工具抛出异常。
同样的工具在其余PC上的所有条件下都能正常运行。
如果我将这几台PC与其他所有PC进行比较, RAM,操作系统,任务负载等没有区别。 此外,工具及其依赖项以及使用它的步骤也都相同。
我对这种奇怪的行为感到困惑。对我来说其他问题是受影响的PC和他们的用户位于不同的国家。所以我无法手动检查PC参数或可以调试。我依赖于我得到的日志。
你们中间有人遇到过类似的问题吗?
你能不能告诉我2台具有相同配置的PC有何不同?是否存在环境变量,系统参数等依赖性。
此致 萨钦
答案 0 :(得分:1)
没有人可以使用您提供的有限信息来回答您的查询。但是我可以给你一些建议如何解决这个问题。
答案 1 :(得分:1)
这可能是一个线程问题吗?有时,具有不同核心数量的机器对竞争条件的反应不同。
答案 2 :(得分:0)
任何设备都可能受到 randon内存问题,存储不一致的影响,而在Windows机器中,臭名昭着的WINDOWS REGISTRY可以容纳许多可能影响程序执行方式的不同值
我建议您运行任何可靠的工具,在正在运行的计算机上执行内存诊断,并将其与无法运行的计算机进行比较
改进工具中的逻辑,检查变量的内容并执行try / catch操作以尝试检测根本原因并记录这些错误以诊断正在发生的事情
答案 3 :(得分:0)
它认为您应该在区域/文化设置中搜索问题。这行“对我来说其他问题是受影响的PC和他们的用户位于不同的国家/地区。”敲响了一个铃声,该变量与double to string和反之亦然。该列表可能会被解析异常中断。
如果您在开始时显示/记录Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator
该怎么办?
然后你应该用cultureinfo解析。
例如:
CultureInfo usCultureInfo = new CultureInfo("en-US");
double result;
if (!double.TryParse("0.231312", NumberStyles.Float, usCultureInfo, out result))
{
}
另一个问题可能是,安装了正确的.NET版本(完整/客户端配置文件)
答案 4 :(得分:0)
感谢您提出宝贵的建议和提示。
由于CultureInfo不同而发生错误。 此可执行文件还读取XLS文件以获取一些数据。 由于文化信息中的mismtach,XLS读取不成功,反过来又破坏了一些变量。
要解决这个问题,我有两个选择: 1.安装MS office语言包 2.在程序中更改文化信息如下: CultureInfo =新CultureInfo(“en-US”);
@Mr。 Jeroen van Langen 特别感谢你!
此致 萨钦