5

Windows 8 アプリを作成していますが、次の例外が発生しました。

SuspensionManager が失敗しました

次のコードを実行する場合:

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

例外はメソッドの 3 行目で発生しますが、詳細はわかりません。

ネット上でこれに関して役立つものを見つけることができませんでした。誰もこれを見たことがありますか?

//編集

これは、私がdynamicWindows 8 Facebook SDK の型変数を使用しているという事実に関連している可能性があります。

dynamic変数は許可されていませんか?

//編集2

dynamic変数の使用法は次のとおりです。

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

および例外のコール スタック:

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]  

最初の 3 つは外部コードで、4 番目は App.xaml.cs のメソッドです。

4

2 に答える 2

2

答えが見つかりました。これはFacebook-sdkとはまったく関係ありません。

サスペンド時にビットマップ画像を pageState に保存していましたが、明らかにこれは機能しません。

古いコードは次のとおりです。

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

そして新しいもの:

BitmapImage img = RandomImage.ImageSource as BitmapImage;
Uri uriSource = img.UriSource;
pageState["currentImage"] = uriSource;
于 2012-11-26T18:25:30.070 に答える
1

シリアル化可能な型 (私の場合は単純なビューモデル クラス) を確保することで、これを回避することができました。次に、プロジェクトのAppコンストラクターで、が私の型を認識していることを確認します。標準の組み込みシリアライザーがその役割を果たしたので、作業は完了です。SharedSuspensionManager

    public App() {
        // ... existing code ...
        SuspensionManager.KnownTypes.Add(typeof(TypeOne));
        SuspensionManager.KnownTypes.Add(typeof(TypeTwo));
    }
于 2014-08-25T05:07:14.327 に答える