C# WinRT后台任务调试/VS 2015调试器以静默方式退出

C# WinRT后台任务调试/VS 2015调试器以静默方式退出,c#,visual-studio,windows-runtime,windows-phone-8.1,C#,Visual Studio,Windows Runtime,Windows Phone 8.1,我正在开发WinRT Windows Phone 8.1应用程序,并尝试实现一个后台任务。经过大量研究,我能够生成一个应该可以工作的代码,但是当我尝试运行它时,调试器退出,没有错误,只是退出。。。我尝试使用Lifecycle Events菜单,通过设置时区触发器,在两个实例上都得到了相同的结果 详情: 我使用Windows运行时组件(Windows Phone)模板创建了一个新项目,然后将该文件编辑为一个简单的背景任务: namespace RSSReader.Tasks { publi

我正在开发WinRT Windows Phone 8.1应用程序,并尝试实现一个后台任务。经过大量研究,我能够生成一个应该可以工作的代码,但是当我尝试运行它时,调试器退出,没有错误,只是退出。。。我尝试使用Lifecycle Events菜单,通过设置时区触发器,在两个实例上都得到了相同的结果

详情: 我使用Windows运行时组件(Windows Phone)模板创建了一个新项目,然后将该文件编辑为一个简单的背景任务:

namespace RSSReader.Tasks
{
    public sealed class GetFeed
    {
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            // Will do stuff...
        }
    }
}
在Package.appxmanifest的“声明”选项卡上注册它,创建后台任务声明,勾选系统事件,并将入口点设置为
RSSReader.Tasks.GetFeed

然后,我在主页上添加了以下内容:

    private async void registerTask()
    {
        string taskName = "FeedChecker";

        var bgAccStatus = await BackgroundExecutionManager.RequestAccessAsync();

        if (bgAccStatus == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity ||
            bgAccStatus == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity)
        {

            foreach (var task in BackgroundTaskRegistration.AllTasks)
            {
                if (task.Value.Name == taskName)
                {
                    return;
                }
            }

            var builder = new BackgroundTaskBuilder();
            var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false);

            builder.Name = taskName;
            builder.TaskEntryPoint = typeof(Tasks.GetFeed).FullName;
            builder.SetTrigger(trigger);

            var registration = builder.Register();
        }
    }

它注册任务,但当我更改时区时,我的应用程序消失,调试器退出…

问题在于方法返回。当您创建一个返回void的异步方法时,它只是触发并忘记,并且在方法执行时没有状态。对于需要检查执行状态的异步方法,需要将返回值从void更改为Task,并且应用程序应在触发任务后继续执行

希望能有帮助