私はWriteableBitmap
の任意のインスタンスを作成するたびに、私はメモリリークを抱えています。私はstackoverflowや他のフォーラムで複数の提案を試みましたが、何も動作していません。WriteableBitmapメモリリーク8
PhotoChooserTask
WriteableBitmap
を作成するPhotoResult
オブジェクトからStream
を使用して画像を選択します。私のテストのアプリの基本的な流れはこれです。
これだけです。変数をヌルにしてGC.Collect()
を呼び出すと、問題の一部しか解決しません。アプリがクラッシュするまでアプリがメモリを割り当てないようにしますが、オブジェクトがスコープから外れても、新しい画像を選択するまで、メモリは常に割り当てられます。私は、XAMLアプリケーションを備えたデフォルトのWindows Phone Direct3Dでそれを再現することができます。デフォルトのプロジェクトへの唯一の変更は以下のとおりである。このため
MainPage.xaml.cs
public MainPage() {
InitializeComponent();
_photoChooserTask = new PhotoChooserTask();
_photoChooserTask.Completed += new EventHandler<PhotoResult>(photoChooserTaskComplete);
}
private void ApplicationBarIconButton_Click(object sender, EventArgs e) {
_photoChooserTask.Show();
}
private void photoChooserTaskComplete(object sender, PhotoResult e) {
if (e.TaskResult == TaskResult.OK) {
BitmapImage image = new BitmapImage();
image.SetSource(e.ChosenPhoto);
WriteableBitmap wbm = new WriteableBitmap(image);
image.UriSource = null;
image = null;
wbm = null;
GC.Collect();
}
}
MainPage.xamlを
<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" Mode="Default" Opacity="0.5" >
<shell:ApplicationBar.Buttons>
<shell:ApplicationBarIconButton IconUri="/junkUrl.png" Text="albums" Click="ApplicationBarIconButton_Click" />
</shell:ApplicationBar.Buttons>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>
こんにちは、私はこの問題にも遭遇しました。 –