2017-02-24 55 views
1

我在JavasScipt中构建UWP应用程序。


本细则我下面:UWP:如何在BackgroundTask中执行操作

Create and register an out-of-process background task
Support your app with background tasks

这里是BackgroundTask初始化:

(function() { 
    "use strict" 

    // Initialization 
    var Background = Windows.ApplicationModel.Background; 

    // Register 
    var taskBuilder = new Background.BackgroundTaskBuilder(); 
    taskBuilder.name = "MyBackgroundTask"; 

    // init trigger 
    var appTrigger = new Background.ApplicationTrigger(); 
    taskBuilder.taskEntryPoint = "clipboardListener.MyBackgroundTask"; 
    taskBuilder.setTrigger(appTrigger); 

    // Check if background task already registered 
    var taskRegistered = false; 
    var iter = Background.BackgroundTaskRegistration.allTasks.first(); 
    var hascur=iter.hasCurrent; 
    while (hascur) 
    { 
     var current = iter.current.value; 
     if (current.name == "MyBackgroundTask") 
     { 
      taskRegistered = true; 
      break; 
     } 
     iter.moveNext(); 
    } 

    if (!taskRegistered) 
    { 
     var task = taskBuilder.register(); 
    } 
})(); 


下面是我设置的任务:

function runBackgroundTask() { 
    appTrigger.requestAsync().then(function (result) { 
     closeRun(); 
    }, function (err) { 
     console.log(err); 
    }); 
}; 


如您所见,我在上面的代码中设置了appTrigger变量来设置任务的触发器。

  1. 我需要触发后台任务,每当用户复制的东西给他的剪贴板?

  2. 如何在后台任务运行时执行某些操作?

回答

1

1.什么我需要触发后台任务,每当用户复制的东西给他的剪贴板?

不支持在后台任务中监听剪贴板更改。我们可以在Windows.ApplicationModel.Background Namespace下找到所有支持的触发器,并且UWP中没有这种触发器。

2.如何在后台任务运行时执行某些操作?

这将取决于您如何实现您的后台任务。通常,我们将创建一个Windows运行时组件,并在该组件中编写实现IBackgroundTask接口的类。

使用C#Windows运行时组件,例如,一个基本的后台任务类想以下几点:

namespace Tasks 
{ 
    public sealed class ExampleBackgroundTask : IBackgroundTask 
    { 
     public void Run(IBackgroundTaskInstance taskInstance) 
     { 

     }   
    } 
} 

而且Run方法是我们用来执行我们想要的。该方法是一个必需的入口点,当指定的事件被触发时将被调用。

欲了解更多信息,请参阅Create the Background Task class in Create and register an out-of-process background task