BackgroundTaskBuilder.Register выдает HRESULT: 0x00700B7 при регистрации нескольких задач.C#

Место общения программистов C#
Ответить
Anonymous
 BackgroundTaskBuilder.Register выдает HRESULT: 0x00700B7 при регистрации нескольких задач.

Сообщение Anonymous »

Мое приложение пытается зарегистрировать две отдельные фоновые задачи. Первая регистрация задачи прошла успешно. Попытка зарегистрировать вторую задачу приводит к возникновению исключения со следующим текстом:

Код: Выделить всё

Cannot create a file when that file already exists. (Exception from HRESULT: 0x800700B7)
Есть этот вопрос, но я не использую повторно экземпляры ApplicationTrigger при регистрации; каждая задача получает свою собственную.
Кроме того, метод Run первой (успешно зарегистрированной) задачи никогда не вызывается ни до, ни после вызова RequestAsync ее триггера метод (который возвращает Allowed).
Эти две задачи зарегистрированы в манифесте приложения:

Код: Выделить всё

[ ... ]



UI.exe





[ ... ]


[...]















Обратите внимание, что я откровенно не очень хорошо понимаю ThreadingModel. Я также попробовал STA и оба, другие варианты, предложенные Intellisense, и поведение не изменилось.
Каждый класс задач имеет следующую подпись (например, ):

Код: Выделить всё

public sealed class BackgroundTaskOne : IBackgroundTask
и использует идентичный код для попытки регистрации:

Код: Выделить всё

var requestTask = BackgroundExecutionManager.RequestAccessAsync().AsTask();
requestTask.Wait();
var builder = new BackgroundTaskBuilder();
builder.Name = GetType().Name;
builder.TaskEntryPoint = GetType().FullName;
// builder.IsNetworkRequested = true;
builder.SetTrigger(trigger);
try {
registration = builder.Register();
return true;
} catch(Exception ex) {
Log.Logger.Error($"BackgroundTaskBuilder.Register: {ex.Message}");
Log.Logger.Information($"Name: {builder.Name}");
Log.Logger.Information($"TaskEntryPoint: {builder.TaskEntryPoint}");
return false;
}
Я загрузил сюда MCRE. Нажимаем кнопки, видим ошибки в консоли отладки.
Видимо я не понимаю, что такое уникальность при регистрации фоновой задачи; Я бы предположил, что комбинация Name и, возможно, TaskEntryPoint послужит уникальной идентификации фоновой задачи. Однако это исключение предполагает, что я пытаюсь сделать одно и то же дважды.
Вопросы:
  • Должно ли приложение иметь возможность регистрировать более одной фоновой задачи?
  • Если да, то что я делаю не так, что получаю это исключение? strong>
  • Почему метод Run ни для одной задачи никогда не вызывается?


Подробнее здесь: https://stackoverflow.com/questions/790 ... ask-regist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»