2017-04-01 1 views
-1

Je suis confronté au problème que si j'essaie d'accéder à ContactManager à partir d'une BackgroundTask, j'obtiens une exception System.IO.FileLoadException.UWP - BackgroundTask et ContactManager

Le même code fonctionne bien lors de l'appel de mon application principale:

public async void Run(IBackgroundTaskInstance taskInstance) 
    { 
     BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); 
     test(); 
     deferral.Complete(); 

    } 

    private async void test() 
    { 
     ContactStore contactStore = await ContactManager.RequestStoreAsync(); 
    } 

Le BackgroundTasks commence normalement, mais dès que je l'appelle « test » l'exception est levée.

Répondre

0

essayer de changer votre test de vide async à Async essai Tâche

+0

Toujours le même problème: Impossible de charger le fichier ou l'assembly 'System.Runtime.WindowsRuntime La définition de manifeste de l'assembly localisé ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040) " – Schwoabaseggele

+0

pouvez-vous partager un projet de repro? Cela fonctionne très bien pour moi.Avez-vous également mis en attente de l'appel à tester? –

0

Ok got it ...

raison était que je suis passé à VS2017 tout en développant et eu une mauvaise dépendance dans le project.json du BackgroundTask:

Alors que le projet principal avait:

"dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0" },

la tâche de fond a:

"dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2" },

après la modification de 5.0.0 tout fut parfait

+0

La dépendance n'est pas faux en fait, vous devez mettre à jour à la fois (5.3.1) si possible, à l'exception des corrections de bogues, de nouvelles API seront disponibles. –

0

Malheureusement Je désinstalle maintenant VS2015 à installer un 2017 je ne peux pas tester par moi-même, mais certains d'API ne sont pas disponibles en arrière-plan Tâches donc tester la méthode que je vais mentionner:

1- Créer une nouvelle solution avec le type Bibliothèque de classes.

2- Mettez les méthodes que vous voulez là.

3- Faites de la bibliothèque de classes une référence pour votre solution de tâche d'arrière-plan.

3- Appelez vos méthodes de cette façon classLib.className.FuncName();

4- Voir si ça marche ou non.