【什么是套间】
套间(APARTMENT)是什么?套间是线程的执行环境。根据这个,我一条一条来解释一下跟套间有关的文章里一些名词和术语是个什么意思。
1、STA,单线程套间,真实意思是单线程执行环境。每个线程都有个自己的套间。
2、MTA,多线程套间,真实意思是多线程执行环境。所有线程共享一个MTA。
3、STA和MTA的差别是什么?除了STA和MTA的共同点之外,STA建立了一个窗口,通过窗口的消息机制来保证本线程COM对象方法的同步调用,MTA基本什么也不做。这是唯一的差别。
4、STA和MTA的共同点是什么?都提供通过Proxy访问其它套间的服务,都提供其它套间访问自己时的Stub服务。
5、每个线程都有属于一个套间,这句话的意思是每个STA线程都有一个自己的COM执行环境,每个MTA共享一个COM执行环境。所以在COM的世界里,线程有三种,一种是普通线程,第二种是STA线程,第三种是MTA线程。所以套间也可以看成是自己的属性。
6、每个COM对象有各自的套间属性,共有5类,其中一个是在2000下独有的,可直接无视,所以有以下4类:Single、Apartment、Both、Free。Single表示本COM只能存在于主STA线程,Apartment表示本COM对象只能存在于STA线程,Both表示本对象既可存在于STA线程,也可以存在于MTA线程,Free表示本COM对象只能存在于MTA线程。
讲到这里,其实已经很清楚了。套间这个东西,的确是很难理解的一个东西,只要把握住“线程的执行环境”,就好理解了。