在后台任务中查找辅助磁贴失败,代码为1

Rob*_*iel 1 c# background windows-8 windows-runtime windows-store-apps

我想通过后台任务更新我的辅助磁贴.我的问题是,迭代所有固定的瓷砖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
            // (...)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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

任何想法,可能是什么原因?感谢您的任何帮助!

kin*_*ple 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();
    }
}
Run Code Online (Sandbox Code Playgroud)