2012-11-25 38 views
5

Ben bir Windows 8 uygulaması inşa ediyorum ve şu istisna ile geldi: Aşağıdaki kodu çalıştırırkenİstisna

SuspensionManager

başarısız oldu:

private async void OnSuspending(object sender, SuspendingEventArgs e) 
{ 
    var deferral = e.SuspendingOperation.GetDeferral(); 
    await SuspensionManager.SaveAsync(); 
    deferral.Complete(); 
} 

Kural dışı durum, yöntemin üçüncü satırında gerçekleşir ve gerçekten herhangi bir ayrıntı vermez.

Bu konuda net olarak hiçbir şey bulamadık. Bunu daha önce gören oldu mu?

Bu aslında Windows 8 Facebook SDK için bir dynamic tip değişkeni kullanıyorum ilgili olabilir

// DÜZENLEME.

dynamic değişkenler izin verilmiyor mu?

dynamic result = await FB.GetTaskAsync("fql", parameters); 
if (result.data.Count > 0) 
{ 
    return result.data[0].src_big as string; 
} 

ve istisna için çağrı yığını: Burada

// DÜZENLEME 2

dynamic değişkenin kullanımı var

mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task task) + 0x5e bytes 
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task) + 0x35 bytes 
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.GetResult() + 0x16 bytes 
FacebookRandomizer.exe!FacebookRandomizer.App.OnSuspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e) Line 86 + 0xa5 bytes C# 
[Native to Managed Transition] 

ilk üç harici kod ve dördüncü benim App.xaml.cs.

cevap

2

Cevabı buldu ve bu tamamen Facebook-sdk ile ilgili değil.

Askıya alındığında pageState'e bir Bitmap görüntüsü kaydediyordum ve görünüşe göre bu çalışmaz.

BitmapImage img = RandomImage.ImageSource as BitmapImage; 
pageState["currentImage"] = img; 

ve yenisi:

BitmapImage img = RandomImage.ImageSource as BitmapImage; 
Uri uriSource = img.UriSource; 
pageState["currentImage"] = uriSource; 
1

ben serilestirilebilir türleri vardı sağlayarak bu geçici bir çözüm başardı (benim durumumda oldu basit ViewModel sınıfları

İşte eski kod var). O zaman SuspensionManager'un App yapıcamda SuspensionManager türlerimi bildiğinden emin olmak için. Standart yerleşik serileştiriciler işlerini yaptı ve ben yaptım.

public App() { 
     // ... existing code ... 
     SuspensionManager.KnownTypes.Add(typeof(TypeOne)); 
     SuspensionManager.KnownTypes.Add(typeof(TypeTwo)); 
    }