Sto avendo una perdita di memoria ogni volta che creo una qualsiasi istanza di un WriteableBitmap
. Ho provato più suggerimenti su StackOverflow e altri forum, ma non funziona nulla. Il flusso di base del mio test app è questo:WriteableBitmap perdita di memoria in Windows Phone 8
- Selezionare un'immagine con il
PhotoChooserTask
- Utilizzare il
Stream
dall'oggettoPhotoResult
per creare unWriteableBitmap
.
Questo è tutto. Nulling le variabili e chiamando GC.Collect()
risolve solo parte del problema. Mantiene l'applicazione da allocazione di memoria fino a quando l'applicazione si blocca, ma anche se gli oggetti sono andati fuori del campo di applicazione, c'è sempre memoria allocata per loro fino a quando seleziono una nuova immagine. Posso riprodurlo con Windows Phone Direct3D predefinito con XAML App. Le uniche modifiche al progetto di default sono le seguenti:
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>
Ciao, ho verifica questo problema, così, qualsiasi soluzione ancora? –