问题描述
Blank project repo with problematic code
我有以下代码用于使用 this article
在CodecQuery.FindAllAsync
之后查询所有支持的音频编解码器
try
{
var query = new CodecQuery();
var queryResult = await query.FindAllAsync(CodecKind.Audio,CodecCategory.Encoder,"");
var subTypes = queryResult
.SelectMany(q => q.Subtypes)
.ToHashSet();
// Other codes
}
catch (Exception ex)
{
Debug.WriteLine(ex);
throw;
}
如文档所述,
要指定应返回指定种类和类别的所有编解码器,而不管支持哪些媒体子类型,请为此参数指定空字符串 ("") 或 null。
对于空字符串 "",它适用于 CodecKind.Video
但不适用于 Audio
(对于 CodecCategory
或 Encoder
的 Decoder
)。如果我指定一个子类型,那么它不会崩溃,例如:
var queryResult = await query.FindAllAsync(CodecKind.Audio,CodecSubtypes.AudioFormatMP3);
奇怪的是,即使我使用泛型 Exception
进行了 try/catch,应用程序还是会崩溃并显示此内容:
我尝试重新启动 Windows,卸载 UWP 应用并进行干净构建。怎么了?如何查询所有可用的音频编解码器?
更新:更改调试设置后,我可以跟踪错误消息:
******.exe 中 0x00007FFDCE5FD759 (KernelBase.dll) 处的未处理异常:0xC0000002:请求的操作未实现。
解决方法
经过我的测试,这个文档的内容是正确的。当我为第三个参数设置“”以查找所有音频编解码器时,代码运行良好。所以这个文件没有错误。
您可以选择调试选项,并将调试器类型从仅托管更改为混合。它不会修复您的异常,但您可以使用调试器跟踪它。您可以参考this reply以获取更多信息。