Я пытаюсь запустить внепроцессную фоновую задачу WinUI 3 (.NET 9) с помощью WindowsAppSDKBackgroundTask + COM/CsWinRT. Регистрация прошла успешно, но команда «Выполнить» задачи никогда не вызывается. Средство просмотра событий показывает:
Фоновая задача для пакета
50438Sample.ProjectBG_1.0.1.0_x64__gn74awtjnb632 с точкой входа
Microsoft.Windows.ApplicationModel.Background.UniversalBGTask.Task не выполнена
в ответ на отмену уведомление.
Ниже приведены соответствующие фрагменты и этапы проверки.
.csproj (проект фоновой задачи)
Код: Выделить всё
net9.0-windows10.0.22621.0
true
true
ProjectX.BackgroundTask.WallpaperTask
Код: Выделить всё
[ComVisible(true)]
[Guid("12345678-1234-1234-1234-123456789abc")]
public sealed class WallpaperTask : IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
var deferral = taskInstance.GetDeferral();
try
{
// Breakpoint never hit, logging never executes
}
finally
{
deferral?.Complete();
}
}
}
Код: Выделить всё
Код: Выделить всё
var builder = new BackgroundTaskBuilder();
builder.Name = "WallpaperBackgroundTask";
builder.SetTaskEntryPointClsid(Guid.Parse("12345678-1234-1234-1234-123456789abc"));
builder.SetTrigger(new TimeTrigger(15, false));
builder.Register(); // no exception thrown
- WinRT.Host.dll, .winmd и UniversalBGTask.dll упакованы.
- CLSID в манифесте соответствует GUID класса.
- Фоновая задача отображается в задаче Планировщик.
- Регистрация возвращает BackgroundTaskRegistration (без исключения).
WinUI 3, .NET 9
Windows App SDK 1.6.x
Windows 11
Вопрос
Почему команда «Выполнить» никогда не выполняется, даже если регистрация прошла успешно? Может ли это быть проблемой активации/конфигурации манифеста COM для внепроцессных задач с использованием CsWinRT? Что еще мне следует проверить или изменить, чтобы позволить суррогату COM активировать фоновую задачу?
Минимальное воспроизведение/шаги для воспроизведения
(Пример проекта доступен ЗДЕСЬ)
Запустите приложение.
Нажмите кнопку «Зарегистрировать» (которая запускает регистрационный код).
Оставьте приложение/Visual Studio открытым и подождите ~15 минут.
Обратите внимание на сбой фоновой задачи и запись средства просмотра событий в разделе:
Журналы приложений и служб → Microsoft → Windows → BackgroundTaskInfrastructure → Operational.>
Подробнее здесь: https://stackoverflow.com/questions/798 ... com-server
Мобильная версия