2013-03-23 3 views
0

Документация BackgroundTaskCompletedEventArgs.CheckResult говорит:Когда BackgroundTaskCompletedEventArgs.CheckResult выдает исключение?

Выдает исключение, если фоновая задача завершена событие сообщила об ошибке.

Я попытался сделать фоновую задачу, которая генерирует исключение в методе Run, но когда я подписываюсь на его Completed события и вызвать CheckResult, когда он завершает, не исключение не генерируется.

Когда CheckResult действительно выдают исключение?

ответ

1

Он должен работать точно так, как вы описали: если исключение выбрано в IBackgroundTaskRun, метод BackgroundTaskCompletedArguments.CheckResult() выдает исключение, когда вы его вызываете.

Убедитесь, что ваша фоновая задача действительно запущена и что ваше приложение находится на переднем плане, иначе IBackgroundTaskRegistration.Completed событие вообще не создано.

Если вы хотите попробовать его на рабочий exaple, скачать Background task sample и сделать две модификации к нему:

  • В Task\ServicingComplete.cs добавить throw new Exception(); в самом конце Run метода.
  • В BackgroundTask\ServicingCompleteTask.xaml.cs добавить args.CheckResult(); в начале OnCompleted метод.

Если теперь запустить приложение, зарегистрировать задачу из пользовательского интерфейса и вызвать его из Debug Location панели инструментов Visual Studio, когда приложение находится на переднем плане, вы заметите, что CheckResult() вызов будет сгенерировано исключение, как и ожидалось.