相关疑难解决方法(0)

WriteableBitmap内存泄漏?

我正在使用下面的代码创建一个基于UI元素的实时图块.它渲染uiElementa WriteableBitmap,保存位图+返回文件名.此方法在Windows Phone后台任务代理中运行,我正在运行内存限制.

private string CreateLiveTileImage(Canvas uiElement, int width, int heigth)
{
   var wbmp = new WriteableBitmap(width, heigth);
   try
   {
      wbmp.Render(uiElement, null);
      wbmp.Invalidate();

      var tileImageName = _liveTileStoreLocation;
      using (var stream = new IsolatedStorageFileStream(tileImageName, FileMode.Create, FileAccess.Write, IsolatedStorageFile.GetUserStoreForApplication()))
      {
         wbmp.SaveJpeg(stream, width, heigth, 0, 100);
         stream.Close();
      }

      uiElement = null;
      wbmp = null;
      GC.Collect();
      return "isostore:" + tileImageName;
   }
   catch (Exception exception)
   {
      // ...
   }
   return null;
}
Run Code Online (Sandbox Code Playgroud)

我做了一些测试,问题是:这个方法泄漏内存,但我不知道为什么/在哪里?!

我也做了一些测试运行 - 在第一次进入这个方法之前:

Microsoft.Phone.Info.DeviceStatus.ApplicationCurrentMemoryUsage
7.249.920 Bytes
Run Code Online (Sandbox Code Playgroud)

这是好的,因为附加了调试器,它使用大约2 MB的内存.

再做一些此方法的运行(在调试器中再次设置为run方法):

Microsoft.Phone.Info.DeviceStatus.ApplicationCurrentMemoryUsage …
Run Code Online (Sandbox Code Playgroud)

c# writeablebitmap windows-phone live-tile

20
推荐指数
1
解决办法
5650
查看次数

Windows Phone 8中BitmapImage/Image控件的内存消耗

我正在测试一个WP8应用程序和它的图像查看器来显示许多图像,我发现应用程序的内存消耗正在提高,并希望找到如何解决它.

我已经从网上阅读了一些文章,但这些文章提供的解决方案不适用于我的应用,请阅读以下历史记录.

首先,我发现文章" Windows Phone 7的图像提示 "并下载其样本进行清洁图像缓存测试,它使用的是1张图像.

然后出于测试目的,我使用应用程序内的15个离线图像编译此应用程序,并设置为"内容",请从此处下载测试应用程序.

我的测试步骤是:

(1) Launch app
(2) Go to Image Caching page
(3) Enable checkbox "Avoid Image Caching"
(4) Continuously tapping button Show/Clear
(5) Keep watching the memory status textblock at the bottom
Run Code Online (Sandbox Code Playgroud)

当我测试我的应用程序时,内存正在提升,如16.02MB =>显示(19.32MB)=>清除(16.15MB)=>显示(20.18MB)=>清除(17.03MB)...等和内存即使离开缓存页面再次进入缓存页面也不会被释放.似乎文章" Windows Phone 7的图像提示 "的解决方案仅适用于1个图像.

这是" Windows Phone 7的图像提示 "解决方案的xaml和代码隐藏.

[Caching.xaml]

        <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <StackPanel Orientation="Horizontal" VerticalAlignment="Top">
                <ToggleButton Content="Show" Width="150" Checked="ShowImageClicked" Unchecked="ClearImageClicked"/>
                <CheckBox x:Name="cbAvoidCache" Content="Avoid Image …
Run Code Online (Sandbox Code Playgroud)

c# out-of-memory bitmapimage windows-phone-8

9
推荐指数
1
解决办法
7402
查看次数