c# - CodecQuery.FindAllAsync 在查询没有子类型的音频编解码器时通过 try/catch 崩溃
问题描述
我有以下代码用于在本文之后使用以下代码查询所有支持的音频编解码器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
or Encoder
)Decoder
。如果我指定一个子类型,那么它不会崩溃,例如:
var queryResult = await query.FindAllAsync(CodecKind.Audio, CodecCategory.Encoder, CodecSubtypes.AudioFormatMP3);
奇怪的是,即使我有一个 try/catch 与 generic Exception
,应用程序只是通过那个崩溃并显示这个:
我已尝试重新启动 Windows,卸载 UWP 应用程序并进行干净的构建。怎么了?如何查询所有可用的音频编解码器?
更新:更改调试设置后,我可以跟踪错误消息:
******.exe 中 0x00007FFDCE5FD759 (KernelBase.dll) 处的未处理异常:0xC0000002:未执行请求的操作。
解决方案
经过我的测试,这个文件的内容是正确的。当我为第三个参数设置“”以查找所有音频编解码器时,代码运行良好。所以这个文档没有错误。
您可以选择Debug选项,并将Debugger 类型从Managed Only更改为Mixed。它不会修复您的异常,但您可以使用调试器对其进行跟踪。您可以参考此回复以获取更多信息。
推荐阅读
- javascript - 当我在反应路由器 dom v6 中使用导航时防止组件渲染
- python-3.x - pdfminer:根据字体大小仅提取文本
- python - 多图颜色分配
- php - 数据显示在控制台中,但不显示在 Vue 中
- c++ - 由于未知函数 EditAnywhere 导致 UE4 错误编译
- java - Amazon Rekognition 对象检测
- wordpress - woocommerce_order_status_completed 没有数据
- javascript - CS Node js 帮助:编写测试指定的 GET/PUT 请求?
- swiftui - 如何在 SwiftUI 中手动显示 DatePicker
- python - PyTorch resnet 坏张量维度