Ich habe einen Speicherverlust, wenn ich jede Instanz eines WriteableBitmap
erstellen. Ich habe mehrere Vorschläge für Stackoverflow und andere Foren ausprobiert, aber nichts funktioniert. Der grundlegende Ablauf meiner Test-App ist dies:WriteableBitmap Speicherverlust in Windows Phone 8
- Wählen Sie ein Bild mit dem
PhotoChooserTask
- Verwenden Sie die
Stream
vomPhotoResult
Objekt eineWriteableBitmap
zu erstellen.
Das ist es. Nullen der Variablen und Aufruf GC.Collect()
löst nur einen Teil des Problems. Es behält die App von der Zuweisung von Speicher, bis die App abstürzt, aber obwohl die Objekte den Gültigkeitsbereich verlassen haben, wird ihnen immer Speicher zugewiesen, bis ich ein neues Bild auswähle. Ich kann es mit dem Standard Windows Phone Direct3D mit XAML App reproduzieren. Die einzigen Änderungen an der Standardprojekt sind folgende:
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>
Hallo, ich habe dieses Problem auch, irgendeine Lösung schon? –