[STAThread] 屬性和 SetApartmentState(ApartmentState.STA) 的區別

似乎有兩種設置線程套間的方式,第一種是在函數前面加上一個屬性:

[STAThread]
void f1()
{
    ...
}


第二種是不寫[STAThread],而是給Thread對象設置ApartmentState屬性:

Program obj = new Program();
Thread t1 = new Thread(obj.f1);
t1.SetApartmentState(ApartmentState.STA);
t1.Start();


我實驗了一下,對於com組件的調用而言,好像只有第二種情況是真的設置了STA線程套間屬性,第一種似乎沒有起作用。我的問題是:

這兩種方式有什麼區別嗎? 第一種方式在什麼時候用是有效的?

 

------解決方案--------------------
以下是MSDN對STAThreadAttribute類的參考:

引用 MSDN:

...
將此屬性應用於入口點方法(C# 和 Visual Basic 中的 Main() 方法)。它對其他方法無效
...


http://msdn.microsoft.com/zh-cn/library/system.stathreadattribute%28v=vs.80%29.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章