控制面板中的语言设置更改后(例如,从英语更改为德语),C#程序停止工作

控制面板中的语言设置更改后(例如,从英语更改为德语),C#程序停止工作,c#,.net,C#,.net,我有一个用C#开发的软件,这是一个纯sentefic应用程序。然而,德国用户发现这个软件安装在德国计算机上时,有时会停止工作。暂时的解决方案是更改控制面板中的语言设置,在我们将语言设置从德语更改为英语后,它可以正常工作。这只是一种工程软件,软件与德语或英语没有任何关系。此外,正如msdn中其他帖子所建议的,我已经多次检查了源代码中的“InitializeComponent()”。“InitializeComponent()”函数中没有奇怪的代码 更改区域设置时,在数字中使用“,”(逗号)和“.”

我有一个用C#开发的软件,这是一个纯sentefic应用程序。然而,德国用户发现这个软件安装在德国计算机上时,有时会停止工作。暂时的解决方案是更改控制面板中的语言设置,在我们将语言设置从德语更改为英语后,它可以正常工作。这只是一种工程软件,软件与德语或英语没有任何关系。此外,正如msdn中其他帖子所建议的,我已经多次检查了源代码中的“InitializeComponent()”。“InitializeComponent()”函数中没有奇怪的代码

更改区域设置时,在数字中使用“,”(逗号)和“.”(句号)时,会更改其含义。可能是您试图将包含这些字符的文本解析为数字

您的程序是否尝试用格式化的数字初始化数字字段


在解析和格式化文本时,需要确保代码对用户的区域性敏感。在读取存储到文件或通过网络发送的数据时,您还需要确保使用一致的区域性(例如,
InvariantCulture

在.NET Framework 4和早期版本中,默认情况下 将所有线程的区域性设置为Windows系统区域性。申请 如果当前区域性与默认系统区域性不同,则此 这种行为通常是不受欢迎的

页面上的示例及其解释可能对您的问题非常有帮助


另外,作为旁注,
try{…}catch{…}
block总是受欢迎的。

试着修改你的问题:)你有什么例外?你有一种日志文件吗?否则,您将丢失…您需要显示用户正在获得的实际异常。话虽如此,原因很可能是您试图解析表示日期或浮点数的字符串,而不指定区域性。结果是,它使用德国文化来解析字符串,而当字符串为英文格式时,解析失败。您的软件对数字格式有什么作用吗?用中文读吗?我怀疑如果它对数字格式有任何作用,那就是问题所在。你的应用程序是否在复制/移动文件?在开发程序时,我有:“Thread.CurrentThread.CurrentCulture=new CultureInfo(“en-US”);”和更多CultureInfo对象。也许,我需要改变所有这些。基本上,我只懂英语,这是一个英语软件。我想,每个懂英语的人都可以使用这个软件。我用的是线。此外,是否存在一种软件可以在任何/大多数语言中工作的方法。如果在线程的开始委托中未显式地将区域性设置为
en-US
,它将使用系统的区域性,而不是应用程序的区域性。