У меня есть следующая фоновая задача:
namespace Background
{
public sealed class BackgroundTask : IBackgroundTask
{
private BackgroundTaskDeferral _deferral;
public void Run(IBackgroundTaskInstance taskInstance)
{
//_deferral = taskInstance.GetDeferral();
}
в файле с именем Task.cs (не то, что имя файла имеет значение).
Пространство имен фона находится в моем решении, которое содержитпроект Упаковка, который содержит решение UWP, которое должно запустить Backgroundtask:
private async void LaunchBackground()
{
await BackgroundExecutionManager.RequestAccessAsync();
var exampleTaskName = "Background";
foreach (var taskA in BackgroundTaskRegistration.AllTasks)
{
if (taskA.Value.Name == exampleTaskName)
{
await new ApplicationTrigger().RequestAsync();
break;
}
}
var builder = new BackgroundTaskBuilder();
builder.Name = exampleTaskName;
builder.TaskEntryPoint = "Background.BackgroundTask";
BackgroundTaskRegistration task = builder.Register();
await new ApplicationTrigger().RequestAsync();
}
В проекте UWP и Упаковке есть следующее объявление в манифесте:
<Extensions>
<Extension Category="windows.backgroundTasks" EntryPoint="Background.BackgroundTask">
<BackgroundTasks>
<Task Type="systemEvent" />
</BackgroundTasks>
</Extension>
</Extensions>
Я мог быЯ не добавил ссылку на фоновый проект в мой пакетный проект, но сделал это в моем проекте UWP.
Тем не менее, когда я пытаюсь запустить его, я получаю следующее:
At: BackgroundTaskRegistration task = builder.Register();
System.ArgumentException: 'Value does not fall within the expected range.'
строитель в соответствии с отладкой: - builder {Windows.ApplicationModel.Background.BackgroundTaskBuilder} Windows.ApplicationModel.Background.BackgroundTaskBuilder
Я что-то пропустил или почему это не работает?
Редактировать: после добавлениятриггер:
builder.SetTrigger(new SystemTrigger(SystemTriggerType.BackgroundWorkCostChange, false));
Который я на самом деле не хочу, я получаю новую ошибку:
При: await new ApplicationTrigger().RequestAsync();
System.Runtime.InteropServices.COMException: 'Error HRESULT E_FAIL has been returned from a call to a COM component.'