3 votes

Transmettre des paramètres ou des arguments à une tâche en arrière-plan dans Uwp

Je crée une application UWP dans laquelle je veux récupérer des données de l'utilisateur à partir d'une zone de texte, puis les transmettre à une tâche en arrière-plan. Mais lorsque j'essaie d'ajouter une référence de projet à la tâche en arrière-plan, je reçois une erreur de référence circulaire. Existe-t-il un moyen de transmettre des arguments peut-être une surcharge de la fonction run ou autre chose. Merci d'avance.

3voto

Shubham Jain Points 149

Romasz l'a expliqué parfaitement mais dans votre cas, vous pouvez obtenir les données de l'utilisateur à partir de la zone de texte en suivant ces étapes :

1. Déclarez ceci dans MainPage.xaml.cs (ou votre page xaml)

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["user"] = User.Text;

2. Maintenant, obtenez les données dans BackgroundTask.cs en utilisant ceci

var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
string user = localSettings.Values["user"].ToString();

Ici, la variable user contient les données de la zone de texte que vous vouliez de la page principale.

Remarque: J'ai supposé que vous avez nommé votre zone de texte "User"

2voto

Romasz Points 20385

Il n'y a pas de moyen direct de faire ce que vous voulez, chaque processus (par exemple BTask et UI) a sa propre mémoire et ne peut pas être accédé comme ça.

Vous aurez besoin d'un courtier pour cela - pour une communication rapide, je pense que vous pouvez utiliser LocalSettings, qui devrait fonctionner correctement - bien que dans le cas d'objets complexes, vous devrez peut-être les sérialiser d'abord. Pour une communication plus avancée, vous pouvez également envisager d'utiliser un fichier dans LocalFolder ou un autre endroit accessible par tous les processus.

Dans certains cas, il peut y avoir un problème de synchronisation des processus (ou d'accès à des ressources partagées, comme des fichiers) - pour cela, il existe des objets conçus pour la synchronisation globale, par exemple Mutex, EventWaitHanle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X