1

バックグラウンド タスクを介してセカンダリ タイルを更新したいと考えています。私の問題は、ピン留めされたすべてのタイルを反復処理するとSecondaryTile.FindAllAsync();失敗し、バックグラウンド タスクがコード 1 で終了することです。

なぜそれができないのか、なぜ例外が発生しないのか、なぜこれがメインアプリ内で機能するのか、私にはわかりません。これはメモリの問題でしょうか?

私のコードは次のようになります。

public sealed class SecondaryTileUpdater : IBackgroundTask
{
    public async void Run(IBackgroundTaskInstance taskInstance)
    {
        var list = await SecondaryTile.FindAllAsync(); // Here it fails :(
        foreach (SecondaryTile liveTile in list)
        {
            // Update Secondary Tiles
            // (...)
        }
    }
}

これは私が得るエラーです:

The program '[5644] backgroundTaskHost.exe: Managed (v4.0.30319)' has exited with code 1 (0x1).

この理由は何ですか?助けてくれてありがとう!

4

1 に答える 1

6

非同期メソッドが待機すると、タスクは終了します。遅延を要求して、非同期コードを実行する時間を与えます。

public sealed class SecondaryTileUpdater : IBackgroundTask
{
    public async void Run(IBackgroundTaskInstance taskInstance)
    {
        //HERE: request a deferral
        var deferral = taskInstance.GetDeferral();

        var list = await SecondaryTile.FindAllAsync(); // Here it fails :(
        foreach (SecondaryTile liveTile in list)
        {
            // Update Secondary Tiles
            // (...)
        }

        //HERE: indicate you are done with your async operations
        deferral.Complete();
    }
}
于 2013-01-23T16:22:30.830 に答える