COMの動作は、それについて考えると意味があります。コードはサービスプロセス内で実行されます。このクラスをSingle Threaded Apartmentで実行するようにマークすると、一度に1つのスレッドしか実行されません。並行コールは、一度に1つずつ実行されるメッセージqeueuにスタックされます。マルチスレッドアパートメントが指定されている場合、コードは同時に実行できます。実行中のプロセスでこれを達成するために、複数のスレッドがこの動作を達成するようにスピンアップされます。
並行処理の問題を避けたい場合は、クラスをdllに入れる必要があります。それでも複数のスレッドがありますが、それぞれが呼び出しプロセスで実行されるので、状態について心配する必要はありません。
スレッドなしで任意のブロックのコードを同時に実行する方法はありません。別々のプロセスで実行しても、まだ複数のスレッドが関与していますが、それらはプロセス境界によって分離されています。
私はかつて彼女の頭を通ってこれを得ることができなかった会社のために働いたobviouse becayseに腹を立てています。 :-)彼らは、別々のプロセスで実行し、共有メモリ(メモリマップされたファイル)を使用してスレッドの問題を回避できると考えました。これは、コードが1つのCPU上で実行され、矛盾を修正するための「修復」アプリケーションを追加したときに機能しました。最後のインストールでは、複数のCPUに移行し、すべてが本当に分断されました。それから、私は終わりを去った。