スレッドで、使用する場合に違いはありますか
Coinitialize(nil)
それ以外の
CoInitializeEx(0, COINIT_MULTITHREADED);
私は Delphi 7 を使用していますが、他のプログラミング言語についても疑問が残ると思います。ご協力ありがとうございます。
前者は、呼び出しスレッドを独自のシングル スレッド アパートメント (STA) に配置する方法で COM を初期化します。後者は、呼び出しスレッドを共有マルチスレッド アパートメント (MTA) に配置する方法で COM を初期化します。2 つのアパートメントは、特にスレッド境界を越えて COM オブジェクトにアクセスする方法において、セマンティクスが大きく異なります。異なるアパートメント内のスレッドはプロキシを使用して COM オブジェクトを共有する必要がありますが、COM は (スレッドごとのメッセージ キューを介して) 同期を提供します。同じアパートメント内のスレッドは、プロキシを使用せずに COM オブジェクトを共有できますが、クリティカル セクションやミューテックスなどを使用して手動で同期する必要があります。
そうです、違いがあり、それは非常に重要です。MSDN のドキュメントをお読みください。非常に詳細です。