gpt4 book ai didi

c# - Windows Phone 8.1 后台任务 - 无法调试且不会触发

转载 作者:行者123 更新时间:2023-11-30 20:46:51 26 4
gpt4 key购买 nike

我对 WP8.1 中的后台任务有疑问我按照本教程创建了一个后台任务作为 Windows 运行时组件: http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977055.aspx

问题是,我无法让我的后台任务运行。它在 NetworkChange 上运行。当我可以进入飞行模式并返回时,它没有开火。当我转到“调试位置”工具栏中的生命周期事件时,它说没有后台任务。我已经调试了注册后台任务的代码并且它正在注册。我也收到“当前不会命中此断点”。没有为此文档加载任何符号”,我认为这是导致问题的原因。

我试过了- 删除 bin 和 obj 文件夹并重建。- 清理项目。- 尝试从头开始构建项目。- 关闭“仅我的代码”选项。- 尝试在另一台机器上做同样的事情,仍然没有。

我的注册码

var taskRegistered = false;
var exampleTaskName = "UploadTask";

foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == exampleTaskName)
{
taskRegistered = true;
break;
}
}

if (!taskRegistered)
{
var builder = new BackgroundTaskBuilder();

builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Tasks.Upload";
builder.SetTrigger(new SystemTrigger(SystemTriggerType.NetworkStateChange, false));
BackgroundTaskRegistration task = builder.Register();
}

包 list 文件如下

<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="Tasks.Upload">
<BackgroundTasks>
<Task Type="systemEvent" />
<m2:Task Type="deviceUse" />
</BackgroundTasks>
</Extension>
</Extensions>

我的任务是这样的:

namespace Tasks
{
public sealed class Upload : IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
Debug.WriteLine("Am i even getting here?");
}
}
}

任何人都可以帮忙,因为我花了太长时间才让它工作。谢谢

最佳答案

当我试过你的代码时,这个特定的 SystemTriggerType.NetworkStateChange 有问题- 事实上,我也没有在 Lifecycle Events 下拉列表中看到已注册的 BackgroundTask。但是,如果我只将 SystemTriggerType 更改为 SystemTriggerType.TimeZoneChange,那么我就能看到它。

下面是稍微修改过的代码:

await BackgroundExecutionManager.RequestAccessAsync();
if (!taskRegistered)
{
Debug.WriteLine("Registering task inside");
var builder = new BackgroundTaskBuilder();
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Tasks.Upload";
builder.SetTrigger(new SystemTrigger(SystemTriggerType.TimeZoneChange, false));
BackgroundTaskRegistration task = builder.Register();
await new MessageDialog("Task registered!").ShowAsync();
}

我不确定为什么使用原始代码 BackgroundTask 在 VS 中不可见,尽管它正在注册 - 它在 BackgroundTaskRegistration.AllTask​​s - 在这种情况下也许尝试使用不同的 SystemTriggerType 进行调试,然后切换到所需的发布版本。

我还测试了具有有问题的 SystemTriggerType.NetworkStateChangeBackgroundTask 是否工作 - 事实上 - 它正在工作。我对您的 BackgroundTask 做了一些修改,以便在 NetworkState 更改时发送 toast 消息。注册任务后,当我打开/关闭 WiFi 时,我会收到 toast 消息。任务代码:

public sealed class Upload : IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
Debug.WriteLine("Hello Pat");
ToastTemplateType toastTemplate = ToastTemplateType.ToastText02;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
XmlNodeList textElements = toastXml.GetElementsByTagName("text");
textElements[0].AppendChild(toastXml.CreateTextNode("Upload Task - Yeah"));
textElements[1].AppendChild(toastXml.CreateTextNode("I'm message from your Upload task!"));
ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toastXml));
}
}

完整的例子你can download here .

关于c# - Windows Phone 8.1 后台任务 - 无法调试且不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26388467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com