win桌面程序, 窗口嵌入IE控件, 必须使用STA才能让窗口有效控制控件. 关于STA与MTA, 有个形象的描述:
进程相当于一个小城镇,
线程相当于这个城镇里的居民,
STA(单线程套间)相当于居民房,是私有的,
MTA(多线程套间)相当于旅馆,是公用的,
Com对象相当于居民房或旅馆里的物品.
接下去就好理解了,一个小城镇(进程)里可以有很多很多的(居民)线程,
这个城镇(进程)只有一间旅馆(MTA),但可以有很多很多的居民房(STA).
只有居民(线程)进入了房间(居民房或旅馆,STA或MTA)以后才能使用该房间里的物品(COM对象),
居民房(STA)里的物品(COM对象)只能供这间房子的主人(创建该STA的线程)使用,其它居民(线程)不能访问.
同样,只有入住到旅馆(MTA)里的居民(线程,可以有多个)才可以访问到旅馆(MTA)里的物品(com对象),
但因为是公用的,所以要合理的分配(同步)才能不会产生混乱.