Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MediaComposition.GetThumbnailAsync()中存在内存泄漏?_C#_Windows_Windows Runtime_Uwp - Fatal编程技术网

C# MediaComposition.GetThumbnailAsync()中存在内存泄漏?

C# MediaComposition.GetThumbnailAsync()中存在内存泄漏?,c#,windows,windows-runtime,uwp,C#,Windows,Windows Runtime,Uwp,在Windows 10上,对MediaComposition.GetThumbnailAsync()的调用似乎会严重泄漏内存。从我在模拟器上看到的情况来看,Windows Phone似乎还可以。也许我遗漏了一些明显的东西,有人能解释一下吗 复制: 创建空白的c#通用Windows项目 将按钮添加到MainPage.xaml,如中所示: 将处理程序添加到MainPage.xaml.cs,如中所示: 使用VS建议的语句添加所需内容 将一些short.mp4添加到资产文件夹中,并将其命名

在Windows 10上,对MediaComposition.GetThumbnailAsync()的调用似乎会严重泄漏内存。从我在模拟器上看到的情况来看,Windows Phone似乎还可以。也许我遗漏了一些明显的东西,有人能解释一下吗

复制:

  • 创建空白的c#通用Windows项目
  • 将按钮添加到MainPage.xaml,如中所示:

  • 将处理程序添加到MainPage.xaml.cs,如中所示:
  • 使用VS建议的语句添加所需内容
  • 将一些short.mp4添加到资产文件夹中,并将其命名为test.mp4
  • 在x86中运行并单击按钮几次。观察Process Explorer或内置VS diagnostics中内存使用的增加。在800MB左右崩溃

    • 已经得到微软的确认,他们可以复制,这是一个bug。现在已在截至2015年11月20日的最新WIN 10版本中修复,请确认。这似乎是windows应用商店平台中的一个bug。它在调试和发布模式下复制。
      
          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"));
      
              }
          }