最近,我的崩溃经理通过电子邮件向我发送了一封我正在处理的游戏中的崩溃。
System.ArgumentException: Exception from HRESULT: 0x80070057 (E_INVALIDARG)
at System.Globalization.CultureInfo.nativeSetThreadLocale(String localeName)
at System.Threading.Thread.set_CurrentCulture(CultureInfo value)
at Siphon_Spirit.Game1.Initialize()
at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)
at Siphon_Spirit.Program.Main(String[] args)
由于它是自动通过电子邮件发送的,我不知道用户所在的位置,但似乎是因为他们的机器没有设置InvariantCulture或其他东西。
在我的初始化方法中,我使用以下代码。我相信只有设置CurrentCulture和CurrentUICulture的两行才会引发问题。
protected override void Initialize()
{
this.IsMouseVisible = false;
SetFullScreen(true);
SaveController.LoadOptions();
screenManager = new Screens.ScreenManager();
screenManager.Initialize();
graphics.ApplyChanges();
Window.Title = "Siphon Spirit";
SaveController.Initialize();
rendertarget = new RenderTarget2D(GraphicsDevice, GlobalData.ScreenWidth, GlobalData.ScreenHeight);
debugger = new Debugger();
Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentUICulture = System.Globalization.CultureInfo.InvariantCulture;
base.Initialize();
}
关于是什么让它崩溃的任何想法?这似乎是一个孤立的案例,因为更多人没有遇到任何问题。