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