Dies ist der Code, den ichSystem.OutOfMemoryException beim Lesen und Bindung Bild von isolierten Speichern
<Border toolkit:TiltEffect.IsTiltEnabled="true" Height="350" Width="400" Grid.ColumnSpan="3">
<Grid Height="350" Width="400" Margin="70,0,70,0" x:Name="Container1">
<Grid.Background>
<ImageBrush ImageSource="{Binding ImageCollection[0]}" Stretch="Uniform" AlignmentX="Left" AlignmentY="Center"/>
</Grid.Background>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<i:InvokeCommandAction Command="{Binding ImageTapCommand}" CommandParameter="CONTAINER0"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Grid>
</Border>
Ebenfalls in XAML für die Bindung Bild verwende ich bin mit 4 Grenze für die Anzeige von meinen letzten Bildern.
In meinem ViewModel verwende ich die folgende Methode zum Lesen von Bildern aus dem isolierten Speicher.
public Stream GetFileStream(string filename, ImageLocation location)
{
try
{
lock (SyncLock)
{
if (location == ImageLocation.RecentImage)
{
filename = Constants.IsoRecentImage + @"\" + filename;
}
using (var iSf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!iSf.FileExists(filename)) return null;
var fs = iSf.OpenFile(filename, FileMode.Open, FileAccess.Read);
return fs;
}
}
}
catch (Exception ex)
{
return null;
}
}
Und nachdem der Strom immer ich dieses unten geschrieben Methode vier Aufbau der WritableBitmap
für UI-Bindung wird verwenden
private WriteableBitmap BuildImage(Stream imageStream)
{
using (imageStream)
{
var image = new BitmapImage();
image.SetSource(imageStream);
return new WriteableBitmap(image);
}
}
In diesem Fall meine Frage nach dem zu navigieren ist und von meiner Seite für 2 bis 3 mal. Die App stürzt bei der BuildImage() -Methode ab, wo ich "image.SetSource (imageStream)" verwende. Methode. Ich habe viele Alternativen ausprobiert, aber gescheitert. Die Ausnahme, die ich bekomme, ist "System.OutOfMemoryException"
Ich habe Image-Steuerelement anstelle von Image-Pinsel versucht.
Ich habe Bitmap anstelle von WriteableBitmap usw. versucht, aber das Ergebnis ist das gleiche.
Die App-Absturzrate wird reduziert, wenn ich kleine Bilder verwende. Aber die Unfallrate ist hoch mit den Bildern, die durch die Kamera aufgenommen wurden.
Ich versuche für eine letzte Woche eine Lösung für dieses Problem, aber fand keine Alternative, um das Problem zu beheben.
fand ich ein link, die über ähnliche Frage spricht aber nicht viele haben das Problem durch Standard
Ich versuchte dies, aber das gleiche Ergebnis. – StezPet