【问题标题】:BACKGROUNDTASKHOST.EXE' has exited with code 1 (0x1) - Geofence issue背景TASKHOST.EXE' 已退出,代码为 1 (0x1) - 地理围栏问题
【发布时间】:2014-09-19 21:03:04
【问题描述】:

我正在使用 GeoFence API 编写 Windows Phone 8.1 应用程序。我的问题是我无法在后台任务中触发位置更改,因为应用程序以代码 1 退出。

我已阅读有关此错误的多个主题,但没有解决方案解决我的问题。

  • 我检查了我的 BackgroundTask 是否是运行时组件,并且确实是。
  • 我检查了我的班级名称,它是正确的。
  • 我检查了我是否在 BackgroundTask 函数中使用了任何 await 函数,但没有找到。
  • 我检查了我是否在应用清单中注册了后台任务,是的,我做了(入口点 ofc)

实际上在从 BackgroundTask 运行 Run 函数之前就出现了错误。

    namespace BackgroundTask
{
    public sealed class geoFenceBackgroundTask : IBackgroundTask
    {
        public void Run(IBackgroundTaskInstance taskInstance)
        {
            ToastTemplateType toastTemplate = ToastTemplateType.ToastText02;
            XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);

            XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
            toastTextElements[0].AppendChild(toastXml.CreateTextNode("MY APP"));
            toastTextElements[1].AppendChild(toastXml.CreateTextNode("Test"));

            //IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
            //XmlElement audio = toastXml.CreateElement("audio");

            ToastNotification toast = new ToastNotification(toastXml);
            ToastNotificationManager.CreateToastNotifier().Show(toast);
        }
    }
}

还有我的注册功能:

    async private void RegisterBackgroundTask()
        {
            // Get permission for a background task from the user. If the user has already answered once,
            // this does nothing and the user must manually update their preference via PC Settings.
            BackgroundAccessStatus backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync();

            // Regardless of the answer, register the background task. If the user later adds this application
            // to the lock screen, the background task will be ready to run.
            // Create a new background task builder
            BackgroundTaskBuilder geofenceTaskBuilder = new BackgroundTaskBuilder();

            geofenceTaskBuilder.Name = "geoFenceBackgroundTask";
            geofenceTaskBuilder.TaskEntryPoint = "BackgroundTask.geoFenceBackgroundTask";

            // Create a new location trigger
            var trigger = new LocationTrigger(LocationTriggerType.Geofence);

            // Associate the locationi trigger with the background task builder
            geofenceTaskBuilder.SetTrigger(trigger);

            // If it is important that there is user presence and/or
            // internet connection when OnCompleted is called
            // the following could be called before calling Register()
            // SystemCondition condition = new SystemCondition(SystemConditionType.UserPresent | SystemConditionType.InternetAvailable);
            // geofenceTaskBuilder.AddCondition(condition);

            // Register the background task

            var geofenceTask = geofenceTaskBuilder.Register();
            geofenceTask.Completed += (sender, args) =>
            {
// MY CODE HERE

            };

            geofenceTask = geofenceTaskBuilder.Register();            
        }

我没有其他想法。有什么帮助吗?

【问题讨论】:

    标签: c# windows-phone-8.1


    【解决方案1】:

    偶然发现了一个类似的问题(当我通过“Lifecyle-Events-Dropdown”启动后台任务时,Visual Studio 停止了调试,并在控制台输出中声明“BACKGROUNDTASKHOST.EXE”已退出,代码为 1 (0x1)” -窗口。

    在 WP8 项目中添加对我的 Tasks-Assembly (winmd) 项目的缺失引用解决了它。

    【讨论】:

    • 你能解释一下你的答案吗?我有同样的问题。
    • 遇到了同样的问题。请点击此链接了解如何添加项目引用 msdn.microsoft.com/en-us/library/hh708954.aspx 您的运行时组件必须列在 Windows Phone 项目的“引用”下
    猜你喜欢
    • 1970-01-01
    • 2017-06-05
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2021-12-22
    • 1970-01-01
    相关资源
    最近更新 更多