【发布时间】:2015-12-01 03:21:22
【问题描述】:
对 MediaComposition.GetThumbnailAsync() 的调用似乎在 Windows 10 上显着泄漏内存。从我在模拟器上看到的内容来看,Windows Phone 似乎没问题。也许我遗漏了一些明显的东西,任何人都可以对此有所了解吗?
复制:
- 创建空白 c# 通用 Windows 项目。
- 将按钮添加到 MainPage.xaml,如下所示:
<Button Click="Button_Click" Content="Click me" />
- 将处理程序添加到 MainPage.xaml.cs,如下所示:
private MediaComposition _comp = null;
private async void Button_Click(object sender, RoutedEventArgs e) {
if (_comp == null) {
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/test.mp4", UriKind.Absolute));
var clip = await MediaClip.CreateFromFileAsync(file);
_comp = new MediaComposition();
_comp.Clips.Add(clip);
}
using (ImageStream thumb = await _comp.GetThumbnailAsync(TimeSpan.FromSeconds(1), 0, 0, VideoFramePrecision.NearestFrame)) {
Debug.WriteLine(GC.GetTotalMemory(true).ToString("N0"));
}
}
- 按照 VS 的建议添加所需的 using 语句。
- 将一些简短的 .mp4 添加到您的资产文件夹并将其命名为 test.mp4
- 在 x86 中运行并单击几次按钮。在 Process Explorer 或内置的 VS 诊断中观察内存使用量的增加。崩溃大约 800MB。
【问题讨论】:
-
确认。这似乎是 Windows 商店平台中的一个错误。它在调试和发布模式下重现。
标签: c# windows windows-runtime uwp