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