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.
Réponses
Trop de publicités?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"
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.