COM had very high goals. One of them was that the threads were programming parts that were very difficult to work properly, and they needed to be controlled using support libraries. Unlike .NET, where you still need to use classes that are not thread safe in thread safe mode.
, COM- ThreadingModel, , . "", " ". COM, , - . , COM , . , , - . , Control.Invoke Dispatcher.Invoke , .
, , . COM . , CoInitialize(), COM, COM-. , . , "". STA (Single Threaded Apartment) MTA (). STA - COM-, . MTA .
, . STA, STA. :
- , COM- . . , , , . .
, COM- MTA. , STA. COM , . COM STA, . , , , , .
COM , 98% , . , 2%, , , . , , , .NET .
COM , - Windows..NET Framework . , Thread.Join() Monitor.Enter() STA, COM, CLR- . - [STAThread], Main() GUI Thread.SetApartmentState(), CLR CoInitialize() . , , (, OpenFileDialog) STA. , , STA.