Ich verwende http://www.codeproject.com/KB/IP/Facebook_API.aspx
Ich versuche, die XAML aufzurufen, die mit WPF erstellt wurde . Aber es gibt mir einen Fehler:
Der aufrufende Thread muss STA sein, da dies für viele UI-Komponenten erforderlich ist.
Ich weiß nicht was ich tun soll. Ich versuche das zu tun:
FacebookApplication.FacebookFriendsList ffl = new FacebookFriendsList();
Aber es gibt mir diesen Fehler.
Ich habe einen Hintergrundarbeiter hinzugefügt:
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...
}
wpf
xaml
multithreading
facebook
C ..
quelle
quelle
DispatcherHelper.CheckBeginInvokeOnUI(Action action)
Wenn Sie den Aufruf vom Hauptthread aus ausführen, müssen Sie das Attribut STAThread zur Hauptmethode hinzufügen, wie in der vorherigen Antwort angegeben.
Wenn Sie einen separaten Thread verwenden, muss sich dieser in einer STA (Single-Threaded Apartment) befinden, was bei Hintergrund-Worker-Threads nicht der Fall ist. Sie müssen den Thread wie folgt selbst erstellen:
wobei ThreadProc ein Delegat vom Typ ThreadStart ist.
quelle
Sie können dies auch versuchen
quelle
Ich vermute, dass Sie von einem Hintergrundthread einen Rückruf zu einer UI-Komponente erhalten. Ich empfehle, diesen Aufruf mit einem BackgroundWorker zu tätigen, da dies dem UI-Thread bekannt ist.
Für den BackgroundWorker sollte das Hauptprogramm als [STAThread] markiert sein.
quelle
Markieren Sie einfach Ihr Programm mit dem
[STAThread]
Attribut und der Fehler verschwindet! es ist Magie :)quelle
Bei mir ist dieser Fehler aufgetreten, weil ein Nullparameter übergeben wurde. Durch Überprüfen der Variablenwerte wurde mein Problem behoben, ohne dass der Code geändert werden musste. Ich habe BackgroundWorker verwendet.
quelle
Wenn Sie eine neue Fenster-UI-Anweisung in einem vorhandenen Thread aufrufen, wird ein Fehler ausgegeben. Erstellen Sie stattdessen einen neuen Thread im Hauptthread und schreiben Sie die Fenster-UI-Anweisung in den neuen untergeordneten Thread.
quelle