UWP进程内后台任务无法通过SocketActivityTrigger触发求助
UWP进程内后台任务SocketActivityTrigger触发失败问题
我的应用需要在挂起状态下进行Socket通信,此前尝试进程外后台任务未成功。目前正在评估进程内后台任务方案,但默认的OnBackgroundActivated()方法无法被SocketActivityTrigger事件触发。
以下是我的操作步骤:
- 步骤1:在App.xaml.cs的
public App()方法中注册后台任务:
foreach (var current in BackgroundTaskRegistration.AllTasks) { if (current.Value.Name == "SocketBackgroundTask") { _backgroundRegistrationTask = current.Value; break; } } if (_backgroundRegistrationTask == null) { var socketBackgroundTask = new BackgroundTaskBuilder(); socketBackgroundTask.Name = "SocketBackgroundTask"; socketBackgroundTask.SetTrigger(new SocketActivityTrigger()); var result = await BackgroundExecutionManager.RequestAccessAsync(); try { _backgroundRegistrationTask = socketBackgroundTask.Register(); if (_backgroundRegistrationTask != null) { Trace.WriteLine("BackgroundTaskRegistration OK :" + result.ToString()); } } catch (Exception ex) { Trace.WriteLine("BackgroundTaskRegistration NG! :" + ex.Message); } }
- 步骤2:
OnBackgroundActivated()方法实现如下:
base.OnBackgroundActivated(args); IBackgroundTaskInstance taskInstance = args.TaskInstance; SocketActivityTriggerDetails socketTriggerDetails = taskInstance.TriggerDetails as SocketActivityTriggerDetails; if (socketTriggerDetails != null) { var socketInformation = socketTriggerDetails.SocketInformation; Trace.WriteLine("Socket Information = " + socketInformation.ToString()); Trace.WriteLine("Trigger Reason = " + socketTriggerDetails.Reason.ToString()); _socketActivityTask = new SocketActivityTask(); _socketActivityTask.Run(taskInstance); }
- 步骤3:根据官方文档说明,仅将触发器替换为
SocketActivityTrigger应该可行,但实际未生效。后台任务注册成功,但事件查看器中出现错误:
The background task with entry point Windows.ApplicationModel.Core.DefaultInProcBackgroundTask and name SocketBackgroundTask failed to activate with error code 0x8027025B.

找不到任何SocketActivityTrigger用于进程内后台任务的资源或示例代码,恳请提供相关见解或指引方向。
内容的提问来源于stack exchange,提问作者Dileepa Rathnayake
相关产品推荐
相关产品推荐

