2016-07-26 1 views
4

Je souhaite créer une tâche d'arrière-plan qui démarre au démarrage de l'application. Pour cela, j'utilise Application Trigger.UWP Erreur de tâche d'arrière-plan

MainPage.xaml.cs

var trigger = new ApplicationTrigger(); 
    BackgroundManagement.RegisterBackgroundTask("InternetBackgroundTask.InternetBackground", "Internet", trigger, null); 
    await trigger.RequestAsync(); 

BackgroundManagement.cs

public static BackgroundTaskRegistration RegisterBackgroundTask(string taskEntryPoint,string taskName,IBackgroundTrigger trigger,IBackgroundCondition condition) 
    { 
     // 
     // Check for existing registrations of this background task. 
     // 

     foreach (var cur in BackgroundTaskRegistration.AllTasks) 
     { 

      if (cur.Value.Name == taskName) 
      { 
       // 
       // The task is already registered. 
       // 

       return (BackgroundTaskRegistration)(cur.Value); 
      } 
     } 

     // 
     // Register the background task. 
     // 

     var builder = new BackgroundTaskBuilder(); 

     builder.Name = taskName; 
     builder.TaskEntryPoint = taskEntryPoint; 
     builder.SetTrigger(trigger); 


     if (condition != null) 
     { 

      builder.AddCondition(condition); 
     } 

     BackgroundTaskRegistration task = builder.Register(); 

     return task; 
    } 

MyTask sur un autre projet

namespace InternetBackgroundTask 
{ 
public sealed class InternetBackground : IBackgroundTask 
{ 

    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     System.Diagnostics.Debug.WriteLine("Run Background Task"); 
    } 
} 

Alors, quand je lance ma demande j'ai cette erreur:

Exception lancée à 0x776BE26B (KernelBase.dll) dans backgroundTaskHost.exe: 0x04242420 (paramètres: 0x31415927, 0x5DE30000, 0x003CED68).

Exception levée à 0x776BE26B dans backgroundTaskHost.exe: Exception Microsoft C++: EETypeLoadException à l'emplacement de mémoire 0x003CDF18.

Exception levée à 0x776BE26B dans backgroundTaskHost.exe: Exception Microsoft C++: [rethrow] à l'emplacement de mémoire 0x00000000.

Exception levée à 0x776BE26B dans backgroundTaskHost.exe: Exception Microsoft C++: EETypeLoadException à l'emplacement de mémoire 0x003CDF18.

J'ai référencé ma tâche de fond dans mon projet et j'ai ajouté mon expérience de travail dans mon manifeste

+0

Avez-vous référencé votre composant d'exécution Windows contenant votre tâche d'arrière-plan dans votre autre projet? – TableCreek

+0

Oui c'est référencé. –

+0

Avez-vous la possibilité de changer la langue os en anglais? Mon français est trop mauvais pour le traduire aux mots équivalents anglais. Le message d'erreur me semble un peu familier. Avez-vous également essayé d'annuler l'enregistrement de la tâche avant de la retourner/de la créer? – TableCreek

Répondre

0

Il y a deux choses Wich ne sont pas évidentes à partir de votre snipped:

Avez-vous déclaré votre tâche d'arrière-plan sous "Déclarations" dans votre Package.appxmanifest? Ensuite, Dans quel type de projet est "InternetBackground.cs"? Ce devrait être un composant Windows Runtime

+0

La première question est oui je pense, c'est dans sa dernière phrase ci-dessous le code. –

+0

Oui j'ai déclaré et est un bon type de projet. –