wpf – 调用线程必须是STA,因为许多UI组件需要这个

我使用http://www.codeproject.com/KB/IP/Facebook_API.aspx

我试图调用使用WPF创建的XAML.但它给我一个错误:

The calling thread must be STA, because many UI components require this.

我不知道该怎么办。我试图这样做:

FacebookApplication.FacebookFriendsList ffl = new FacebookFriendsList();

但它给我这个错误。

我添加了一个背景工人:

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...
}
如果从主线程进行调用,则必须将STAThread属性添加到Main方法,如上一个答案中所述。

如果你使用一个单独的线程,它需要在一个STA(单线程公寓),这不是后台工作线程的情况。你必须自己创建线程,像这样:

Thread t = new Thread(ThreadProc);
t.SetApartmentState(ApartmentState.STA);

t.Start();

ThreadProc是ThreadStart类型的委托。

http://stackoverflow.com/questions/2329978/the-calling-thread-must-be-sta-because-many-ui-components-require-this

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:wpf – 调用线程必须是STA,因为许多UI组件需要这个