【问题标题】:Universal Windows App Background Task "has exited with code 1 (0x1)"通用 Windows 应用后台任务“已退出,代码为 1 (0x1)”
【发布时间】:2016-04-01 10:00:25
【问题描述】:

在这个问题上摸不着头脑。

我的 UWP 应用程序中有一个后台任务,它注册为每 15 分钟运行一次(使用 TimeTrigger),并且只要互联网可用(使用 SystemTrigger)。我知道这些已正确注册,因为它们在使用 Visual Studio 进行调试时都出现在“生命周期事件”中。不过,我的注册代码如下:

bool registered1 = false;
bool registered2 = false;
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
    if (task.Value.Name == "BackgroundGPS")
    {
        registered1 = true;
    }

    if (task.Value.Name == "InternetAvailGPS")
    {
        registered2 = true;
    }
}

await BackgroundExecutionManager.RequestAccessAsync();

if (!registered1)
{
    var builder1 = new BackgroundTaskBuilder();

    builder1.Name = "BackgroundGPS";
    builder1.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask";

    var triggerTime = new TimeTrigger(15, false);

    builder1.SetTrigger(triggerTime);

    BackgroundTaskRegistration task1 = builder1.Register();

}

if (!registered2)
{
    var builder2 = new BackgroundTaskBuilder();

    builder2.Name = "InternetAvailGPS";
    builder2.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask";

    var triggerIA = new SystemTrigger(SystemTriggerType.InternetAvailable, false);

    builder2.SetTrigger(triggerIA);

    BackgroundTaskRegistration task2 = builder2.Register();
}

我已确保在我的清单中正确声明了这些任务。如果不是,我的应用会在尝试注册它们时抛出异常。

如果我在调试模式下运行,我可以看到 BackgroundGPSInternetAvailGPS 都显示在生命周期事件中。但是,当我单击它们中的任何一个来强制它们执行时,我会在输出窗口中看到以下内容:

The program '[4728] backgroundTaskHost.exe' has exited with code 1 (0x1).

我在后台任务的“运行”方法的第一行代码设置了一个断点,但这从未被命中。后台任务从未加载或运行,我不知道为什么。这可能不是我的 Run 方法的问题,但它看起来像这样(我省略了它的大部分内容,只包括开头和结尾)

public async void Run(IBackgroundTaskInstance taskInstance)
{
    Debug.WriteLine("GPS Started");
    int errCode = 0;
    try
    {
        _deferral = taskInstance.GetDeferral();
        saveGPSStatus(DateTime.Now.ToString(), "", " ");

        var access = await Geolocator.RequestAccessAsync();

        if (access != GeolocationAccessStatus.Allowed)
        {
            Debug.WriteLine("No access");
            saveGPSStatus("", "", "No GPS Access");
            return;
        }

        Geolocator locator = new Geolocator();
        locator.DesiredAccuracyInMeters = 100;

        Geoposition position = await locator.GetGeopositionAsync();

         //Stuff goes on in here

        _deferral.Complete();
    }
    catch (Exception e)
    {
        Debug.WriteLine(e.Message);
        saveGPSStatus("", "", "Unexpected error. Err code "+errCode+". " + e.Message);
        _deferral.Complete();
    }

}

我在运行 build 10.0.10586.164 的 Windows Phone 和 Windows 平板电脑上都试过了,它们都没有执行我的后台任务。

正如我上面所说,这些在几周前运行良好,但由于一些应用的用户一直在抱怨,他们才意识到出了点问题!

非常感谢任何帮助。

【问题讨论】:

    标签: c# visual-studio-2015 win-universal-app windows-10-universal background-task


    【解决方案1】:

    最后让它工作了,我只是在我的主项目中缺少对我的后台任务项目的引用。我一定是在那之前的某个时候不小心删除了它。

    【讨论】:

      【解决方案2】:

      只是为了扩展没有引用它,没有正确的 TaskEntryPoint 命名空间和类名也会导致此错误。对我来说,我拼错了班级名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-05
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-05
        • 2020-01-05
        • 1970-01-01
        相关资源
        最近更新 更多