Exception Try/catch在资源加载期间不工作

Exception Try/catch在资源加载期间不工作,exception,audio,xna,xna-4.0,Exception,Audio,Xna,Xna 4.0,在加载声音效果期间(在C#,XNA中),使用: SoundEffect效果=内容。负载(位置); 在某些具有特定声音设置的计算机上,我会遇到应用程序崩溃,引发invalidoOperationException异常。内容管理器似乎已正确初始化,位置也正确(在不同的计算机上工作正常) 音频文件示例可从以下网址获得: 有趣的是,try/catch失败,仍然会导致应用程序崩溃 试试看 { 影响=内容。荷载(位置); } 抓住 { 警告。发生(“检测到音频播放问题。声音自动禁用”); DebugEng

在加载声音效果期间(在C#,XNA中),使用:

SoundEffect效果=内容。负载(位置);
在某些具有特定声音设置的计算机上,我会遇到应用程序崩溃,引发
invalidoOperationException
异常。内容管理器似乎已正确初始化,位置也正确(在不同的计算机上工作正常)

音频文件示例可从以下网址获得:

有趣的是,try/catch失败,仍然会导致应用程序崩溃

试试看
{
影响=内容。荷载(位置);
}
抓住
{
警告。发生(“检测到音频播放问题。声音自动禁用”);
DebugEngine.disableSound=true;
返回;
}
试一试/接球有什么问题

调用堆栈如下所示:

Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Helpers.ThroweExceptionFromErrorCode(int error)+0x3d字节 Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Audio.SoundEffect.AllocateFormandData(字节[]格式,字节[]数据,整数偏移量,整数计数)+0x107字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Audio.SoundEffect.Create(字节[]格式,字节[]数据,整数偏移量,整数计数,整数循环开始,整数循环长度,System.TimeSpan持续时间)+0x31字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Audio.SoundEffect.SoundEffect(字节[]格式,字节[]数据,int-loopStart,int-loopLength,System.TimeSpan持续时间)+0xd1字节 Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Content.SoundEffectReader.Read(Microsoft.Xna.Framework.Content.ContentReader输入,Microsoft.Xna.Framework.Audio.SoundEffect existingInstance)+0x124字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Content.ContentReader.InvokeReader(Microsoft.Xna.Framework.Content.ContentTypeReader,对象存在实例)+0xdf字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Content.ContentReader.ReadObjectInternal(对象存在实例)+0xfd字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Content.ContentReader.ReadObject()+0x4d字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Content.ContentReader.ReadAsset()+0x88字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Content.ContentManager.ReadAsset(字符串assetName,System.Action recordDisposableObject)+0x129字节
Microsoft.Xna.Framework.dll!Microsoft.Xna.Framework.Content.ContentManager.Load(字符串assetName)+0x2c7字节
Project_Ares.exe!Project_Ares.SoundEffectAres.Load(字符串位置)行77+0x2c字节C#


很可能是因为资产是从不同的线程加载的。如果没有将异常封送回调用线程,则catch语句将不会执行任何操作。XNA不使用单独的线程加载内容或其他任何内容。据我所知,线程可能是一个问题的唯一地方是在与媒体播放器交互时。我发现很难解释您所描述的情况。你能发布堆栈跟踪吗?@ColeCampbell谢谢你的澄清。我只是在猜测,但线程通常是缺少此类异常的原因。如果这里不是这样,听起来确实有点奇怪。我在上面添加了堆栈跟踪。