BackgroundTaskBuilder.SetTaskEntryPointClsid(Guid) 方法

定义

使用现有 BackgroundTaskBuilder 对象分配 COM CLSID 入口点。

public:
 virtual void SetTaskEntryPointClsid(Platform::Guid TaskEntryPoint) = SetTaskEntryPointClsid;
void SetTaskEntryPointClsid(winrt::guid const& TaskEntryPoint);
public void SetTaskEntryPointClsid(Guid TaskEntryPoint);
function setTaskEntryPointClsid(TaskEntryPoint)
Public Sub SetTaskEntryPointClsid (TaskEntryPoint As Guid)

参数

TaskEntryPoint
Guid

Platform::Guid

winrt::guid

应用程序定义的 TaskEntryPoint 类的名称。

Windows 要求

设备系列
Windows 10, version 2004 (在 10.0.19041.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v10.0 中引入)

示例

下面的代码示例演示了如何使用 BackgroundTaskBuilder 将创建的 WinMain COM 后台任务注册到时间间隔为 15 分钟的时间触发器。

示例代码通过检查具有特定任务名称的后台任务是否已注册来避免创建重复的任务。 这是在示例代码中完成的,因为意图是只存在一个特定的后台任务注册。

由应用开发人员决定创建一个或多个具有相同入口点 (或触发器或名称) 的后台任务。

 using System;
 using Windows.ApplicationModel.Background;

 public IBackgroundTaskRegistration RegisterBackgroundTaskWithSystem(IBackgroundTrigger trigger, Guid entryPointClsid, string taskName)
 {
     foreach (var registrationIterator in BackgroundTaskRegistration.AllTasks)
     {
         if (registrationIterator.Value.Name == taskName)
         {
             return registrationIterator.Value;
         }
     }

     BackgroundTaskBuilder builder = new BackgroundTaskBuilder();

     builder.SetTrigger(trigger);
     builder.SetTaskEntryPointClsid(entryPointClsid);
     builder.Name = taskName;

     BackgroundTaskRegistration registration;
     try
     {
         registration = builder.Register();
     }
     catch (Exception)
     {
         registration = null;
     }

     return registration;
 }

 RegisterBackgroundTaskWithSystem(new TimeTrigger(15, false), typeof(TimeTriggeredTask).GUID, typeof(TimeTriggeredTask).Name);

注解

对于经典 COM CLSID 激活,在注册期间通过 SetTaskEntryPointClsid 方法指定要激活的 CLSID。 COM 注册必须标识进程外 COM 服务器 (即 LocalServer32) 。

适用于

另请参阅