Saya menggunakan http://www.codeproject.com/KB/IP/Facebook_API.aspx
Saya mencoba memanggil XAML yang dibuat menggunakan WPF . Tapi itu memberi saya kesalahan:
Utas panggilan harus STA, karena banyak komponen UI memerlukan ini.
Saya tidak tahu harus berbuat apa. Saya mencoba melakukan ini:
FacebookApplication.FacebookFriendsList ffl = new FacebookFriendsList();
Tapi itu memberi saya kesalahan itu.
Saya menambahkan pekerja latar belakang:
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 ..
sumber
sumber
DispatcherHelper.CheckBeginInvokeOnUI(Action action)
Jika Anda melakukan panggilan dari utas utama, Anda harus menambahkan atribut STAThread ke metode Utama, seperti yang dinyatakan dalam jawaban sebelumnya.
Jika Anda menggunakan utas terpisah, ia harus berada dalam STA (apartemen utas tunggal), yang tidak berlaku untuk utas pekerja latar belakang. Anda harus membuat utas sendiri, seperti ini:
dengan ThreadProc menjadi delegasi dari tipe ThreadStart.
sumber
Anda juga dapat mencoba ini
sumber
Saya menduga bahwa Anda menerima panggilan balik ke komponen UI dari utas latar belakang. Saya sarankan Anda melakukan panggilan itu menggunakan BackgroundWorker karena ini adalah UI thread aware.
Untuk BackgroundWorker, program utama harus ditandai sebagai [STAThread].
sumber
Tandai saja program Anda dengan
[STAThread]
atribut dan kesalahan hilang! itu sihir :)sumber
Bagi saya, kesalahan ini terjadi karena parameter nol dilewatkan. Memeriksa nilai variabel memperbaiki masalah saya tanpa harus mengubah kode. Saya menggunakan BackgroundWorker.
sumber
Jika Anda memanggil pernyataan UI jendela baru di utas yang sudah ada, itu menimbulkan kesalahan. Alih-alih itu buat utas baru di dalam utas utama dan tulis pernyataan UI jendela di utas anak baru.
sumber