App stürzt ab, während versucht wird, das isolierte Speicherabbild zu binden

8

In meiner Anwendung verwende ich die unten erwähnte Hilfsmethode, um mein isoliertes Speicherabbild an die Bildsteuerung zu binden. Ich habe diese Hilfsmethode aus dem Link " Bindung von Bildern, die im isolierten Speicher an die Bildsteuerung in Windows Phone gespeichert sind "

%Vor%

}

Ich verwende das in einem ListBox-Steuerelement. Und wenn Sie mit Standard-Bibliotheksbildern versuchen, wird alles wie erwartet funktionieren. Aber wenn ich mit den Bildern mit großer Größe versuche (aufgenommen durch die Gerätekamera) stürzt die App ab.

Und hier ist die Ausnahme, die ich bekomme

Eine Ausnahme vom Typ 'System.OutOfMemoryException' ist in System.Windows.ni.dll aufgetreten, wurde aber nicht im Benutzercode behandelt

Stapelverfolgung

bei MS.Internal.FrameworkCallbacks.NotifyManagedDebuggerOnNativeOOM ()    bei MS.Internal.XcpImports.BitmapSource_SetSource (BitmapSource BitmapSource, CValue & amp; byteStream)    bei System.Windows.Media.Imaging.BitmapSource.SetSourceInternal (Stream streamSource)    bei System.Windows.Media.Imaging.BitmapImage.SetSourceInternal (Stream-Stream-Quelle)    bei System.Windows.Media.Imaging.BitmapSource.SetSource (Stream streamSource)    bei MyaPP.Common.IsoStoreImageSource. & lt; & gt; c__DisplayClass4. & lt; & gt; c__DisplayClass6.b__1 (Objekt _)

    
Nitha Paul 22.04.2013, 12:16
quelle

3 Antworten

0

Das Caching innerhalb von ListBox beansprucht möglicherweise Ihren Speicher und dies ist besonders bei größeren Bildern bemerkbar. Ich bin nicht vertraut mit der Hilfsmethode, die Sie gepostet haben, aber versuchen Sie es hinzuzufügen.

%Vor%     
keyboardP 22.04.2013 12:50
quelle
0

Okay, es hat etwas gedauert, bis ich auf dieses Thema zurückgekommen bin. Ich werde meine Ergebnisse hier teilen, aber ich betrachte sie nicht als eine echte Antwort auf das Problem, sondern eher als Workaround. Ich hoffe jedoch, es wird jemandem helfen.

Zuerst möchte ich OutOfMemoryException unter bestimmten Umständen bestätigen. Aber überraschend hängt es vom Seitenlayout ab, das Sie verwenden. Wenn Ihr Layout StackPanel enthält, haben Sie eine Ausnahme. Ich denke, es kommt auf die Tatsache an, wie MeasureOverride und ArrangeOverride Methoden in StackPanel implementiert sind (obwohl ich hier völlig falsch liegen kann). Wenn ListBox ein untergeordnetes Objekt für StackPanel ist, versucht es, alle Bilder vor der Anzeige zu laden. Dies verursacht natürlich den Speicherverlust.

Wenn Sie andererseits etwas wie Grid als übergeordnetes Element für die Liste der Bilder verwenden, gibt es keine solchen Ausnahmen und die Speicherauslastung ist angemessen.

Hier ist das Seitenlayout, das für mich funktioniert hat:

%Vor%

Dies ist die beste Antwort, die ich jetzt für dich habe. Bitte lassen Sie mich wissen, wenn es geholfen hat.

    
Haspemulator 23.04.2013 16:11
quelle
0

Sie können so versuchen, Stream Objekt wird automatisch entsorgt.

%Vor%     
gofor.net 05.08.2014 06:59
quelle