- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已遵循 Microsoft 指南创建和注册后台任务:https://msdn.microsoft.com/en-us/library/windows/apps/mt299100.aspx
我有我的主项目,它使用触发器等注册后台任务,还有另一个 Windows 运行时组件项目,它包含后台任务的代码,并被我的主项目引用。
我注册后台任务的代码是:
bool registered = false;
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == "BackgroundGPS")
{
registered = true;
}
}
if (!registered)
{
var builder = new BackgroundTaskBuilder();
builder.Name = "BackgroundGPS";
builder.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask";
BackgroundExecutionManager.RemoveAccess();
var x = await BackgroundExecutionManager.RequestAccessAsync();
var trigger = new TimeTrigger(15, false);
builder.SetTrigger(trigger);
BackgroundTaskRegistration task = builder.Register();
//Here trigger property of 'task' is null.
}
}
我的后台任务从未运行,因为触发器似乎从未触发。我调试了代码,根据我的评论,BackgroundTaskRegistration 变量的 trigger 属性为空。
现在,我已经尝试使用 SystemTrigger 而不是 TimeTrigger 并且它有效,该属性不为空。我看到触发器属性被描述为“如果触发器类型不受支持则为空”。
为什么不支持 TimeTrigger?我已调用 RequestAccessAsync()
来获取锁屏访问权限,它会按允许返回。我还在主项目的应用程序 list 的“后台任务”声明的任务类型中添加了“计时器”。根据 Microsoft 的所有建议,TimeTrigger 是让后台任务在计时器上运行的唯一方法(MaintenanceTrigger 仅在插入电源时工作)。
关于这个有两个类似的SO问题:
Can't register a Time triggered Background Task
BackgroundTaskRegistration trigger property is null
其中一个没有任何答案,另一个我已经实现的建议。
有人能帮忙吗?
最佳答案
我认为这是一个文档问题。我这边的 backgroundtaskregistration 触发器属性也为 null,但时间触发器确实有效。
我不知道你是怎么测试的。但是进行以下测试将表明它确实有效。
手动卸载您的应用以避免任何意外行为。
使用非常简单的实现定义后台任务,如下所示。
public sealed class BackgroundTask1 : IBackgroundTask
{
BackgroundTaskDeferral _deferral;
public async void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
await ApplicationData.Current.LocalFolder.CreateFileAsync("test.txt"
, CreationCollisionOption.ReplaceExisting);
_deferral.Complete();
}
}
在 Visual Studio 中,开始调试您的应用。后台任务注册完成后,点击生命周期事件工具栏,选择后台任务,如下图。这将强制后台任务运行。借此机会检查是否有任何问题。
转到以下文件夹并检查是否可以看到 test.txt 文件存在。将 {User name} 替换为您登录的用户。在 Visual Studio 中,在设计器中打开项目的 package.appxmanifest,切换到 packaging 选项卡,最后一行是 {Package family name},将占位符替换为它。
C:\Users\{User name}\AppData\Local\Packages\{package family name}\LocalState
关于c# - 尝试使用 TimeTrigger 注册后台任务时,“Trigger”属性为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33175079/
我目前无法在使用 Function CLI 版本 2.3.148 和 2.3.199 的 macO 中运行 TimeTrigger 函数: 这是我的 csproj: netstanda
我有一个名为 POEditorTranslations 的 Azure 函数,其 TimeTrigger 设置为: * */10 * * * * 首先是公共(public)静态异步任务 POEdito
我有一个在 Linux 系统中运行的 azure 函数应用程序。在其中,我创建了两个函数,一个由 blob 触发器触发,另一个由 timetrigger 触发。 这两个功能都是通过azure DevO
我正在尝试创建一个 Azure WebJob,它将在设定的计时器上执行 Functions.Methods。我在 VS2017 中设置了一个简单的 WebJob 项目,并添加了 Microsoft.A
我已遵循 Microsoft 指南创建和注册后台任务:https://msdn.microsoft.com/en-us/library/windows/apps/mt299100.aspx 我有我的主
当我尝试从“新解决方案”模板创建“计时器触发器”应用程序时,Visual Studio Professional 2022(创建新项目 -> Azure Functions -> 计时器触发器)会创建
当我尝试从“新解决方案”模板创建“计时器触发器”应用程序时,Visual Studio Professional 2022(创建新项目 -> Azure Functions -> 计时器触发器)会创建
在我的 UWP 应用程序中,我有一个由 TimeTrigger 触发的后台任务。在后台任务的代码中,我有这个片段(我的示例中的“第一个事件”和“第二个事件”几乎不消耗任何资源): var deferr
在我的 Windows 8 Metro 应用程序的后台任务中运行时,Client.GetAsync 对我来说似乎失败了。 我尝试同时使用 TimeTrigger 和 MaintenanceTrigge
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
这是我的场景:我在同一个解决方案中有一个 Windows Phone 8.1 应用程序 (MainApp)、一个类库和一个 Windows 运行时组件 (BackgroundTask)。 当我加载我的
我已在 Visual Studio Code 中成功创建了 Azure 时间触发器。 我在上传到 Azure 门户之前在 VSC 中对其进行了测试,并且运行正常 当我在 Azure 中运行它时,它给我
我已在 Visual Studio Code 中成功创建了 Azure 时间触发器。 我在上传到 Azure 门户之前在 VSC 中对其进行了测试,并且运行正常 当我在 Azure 中运行它时,它给我
我是一名优秀的程序员,十分优秀!