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 при регистрации; каждая задача получает свою собственную.
Эти две задачи зарегистрированы в appxmanifest:

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

[ ... ]



MyApp.exe





[ ... ]


[...]















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

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

public sealed class MyFirstBGTask : RegisterableBackgroundTask, IBackgroundTask
и наследует тот же защищенный метод, который пытается выполнить регистрацию:

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

protected IBackgroundTaskRegistration RegisterBackgroundTask(String taskName, IBackgroundTrigger trigger) {
// First check if the task is already registered and return that if so
foreach(var task in BackgroundTaskRegistration.AllTasks) {
if(task.Value.Name == taskName) {
// Already registered; return the existing registration
return task.Value;
}
}
var requestTask = BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
builder.Name = taskName;
builder.TaskEntryPoint = GetType().FullName;
builder.IsNetworkRequested = true;
builder.SetTrigger(trigger);
try {
BackgroundTaskRegistration registration = builder.Register();
return registration;
} catch(Exception ex) {
Log.Logger.Error($"BackgroundTaskBuilder.Register: {ex.Message}");
throw;
}
}
Видимо, я не понимаю, что представляет собой уникальность при регистрации фоновой задачи; Я бы предположил, что комбинация Name и, возможно, TaskEntryPoint послужит уникальной идентификации фоновой задачи. Однако это исключение предполагает, что я пытаюсь сделать одно и то же дважды.
Вопросы:
  • Должно ли приложение иметь возможность регистрировать более одной фоновой задачи?
  • Если да, то что я делаю не так, что получаю это исключение? сильный>


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

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

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

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

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

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