关于STAThread

C#的关键字 STAThread即 single-threaded apartment。
每个Thread都有一个关于ApartmentState的属性,可以把它设置为:STA或者MTA,或者UNKNOWN。
当你想指定工程的启动窗口的时候,你需要在该窗口类中申明一个Main()方法,并为这个方法设置[STAThread]属性。
详细信息,清查阅MSDN中关于Threading和COM Interop和COM+ Apartment Model的文章:
 

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguidnf/html/cpconmanagedunmanagedthreading.asp
 

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguidnf/html/cpconadvancedcominterop.asp
 

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgservices_synchronization_8703.asp
 

是一种线程模型。其它的好像还是MTA(多线程套间)、Free  Thread(自由线程)。这个属性要加在主  Main  上。这个属性只在  Com  Interop  所用,如果全部是  managed  code  则无用。简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。启动线程模型可设置为单线程单元或多线程单元。如果未对其进行设置,则该线程不被初始化。

也就是说如果你用的.NET Framework,并且没有使用COM Interop,一般不需要这个Attribute

posted @ 2005-07-29 11:43  竹君子  阅读(162)  评论(0编辑  收藏  举报