Le thread appelant doit être PERSONNEL, parce que de nombreux composants de l'INTERFACE utilisateur besoin de cette
Je suis en utilisant http://www.codeproject.com/KB/IP/Facebook_API.aspx
Je suis en train d'appeler le XAML qui est créé à l'aide de WPF. Mais il me donne une erreur:
Le thread appelant doit être PERSONNEL, parce que de nombreux composants de l'INTERFACE utilisateur, l'exigent.
Je ne sais pas quoi faire. Je suis en train de le faire:
FacebookApplication.FacebookFriendsList ffl = new FacebookFriendsList();
Mais il me donne cette erreur.
J'ai ajouté un fond travailleur:
static BackgroundWorker bw = new BackgroundWorker();
static void Main(string[] args)
{
bw.DoWork += bw_DoWork;
bw.RunWorkerAsync("Message to worker");
Console.ReadLine();
}
static void bw_DoWork(object sender, DoWorkEventArgs e)
{
//This is called on the worker thread
FacebookApplication.FacebookFriendsList ffl = new FacebookFriendsList();
Console.WriteLine(e.Argument); //Writes "Message to worker"
//Perform time-consuming task...
}
Vous devez vous connecter pour publier un commentaire.
Essayez d'appeler votre code à partir de la répartiteur:
DispatcherHelper.CheckBeginInvokeOnUI(Action action)
Si vous faites l'appel à partir du thread principal, vous devez ajouter l'attribut STAThread à la méthode main, comme indiqué dans la réponse précédente.
Si vous utilisez un thread séparé, il doit être dans une STA (single-threaded apartment), ce qui n'est pas le cas pour le fond de threads de travail. Vous devez créer le thread de vous-même, comme ceci:
avec ThreadProc être un délégué de type ThreadStart.
Je pense que vous êtes l'obtention d'un rappel à un composant de l'INTERFACE utilisateur à partir d'un thread d'arrière-plan. Je vous recommande de faire cet appel à l'aide d'un BackgroundWorker comme c'est le thread de l'INTERFACE utilisateur courant.
Pour le BackgroundWorker, le programme principal doit être marqué comme [STAThread].
Vous pouvez également essayer cette
Pour moi, cette erreur s'est produite en raison d'un paramètre null est passé. Vérifier les valeurs des variables a fixé mon problème sans avoir à modifier le code. J'ai utilisé BackgroundWorker.
Il suffit de marquer votre programme avec la
[STAThread]
attribut et l'erreur s'en va! c'est magique 🙂Si vous appelez une nouvelle fenêtre de l'INTERFACE utilisateur déclaration dans un fil de discussion existant, il renvoie une erreur. Au lieu de créer un nouveau thread à l'intérieur du thread principal et écrire la fenêtre de l'INTERFACE utilisateur énoncé dans l'enfant nouveau thread.