Ist in diesem Fall eine STA-Nachrichtenschleife erforderlich?

Ich habe einige COM-Objekte, die ich in einer .NET-Anwendung für Threads erstelle und ausführe. Die Threads sind als Single Threaded Apartments markiert, und alles scheint zu funktionieren. Wenn diese Threads versuchen, vom Haupt-Thread aus auf COM-Objekte zuzugreifen, werden diese Objekte in .NET automatisch gemarshallt und serialisiert. Selbst in diesem Fall werden die Dinge für mich sicher und ordentlich gehandhabt ein bisschen langsam.

Meine Frage ist, während die Dinge gut zu funktionieren scheinen, bin ich esnicht Pumpen einer Nachrichtenschleife in den STA-Threads, die ich erstelle. Ich würde es vorziehen, die Nachrichtenschleife zu meiden, wenn dies aufgrund der zusätzlichen Komplikationen möglich wäre (und möglicherweise auch wegen Effizienzverlusten).

Ich habe eine Reihe von Ratschlägen gelesen, warum die Nachrichtenschleife erforderlich ist (meistens vom sehr hilfsbereiten Hans Passant), und nach meinem Verständnis gibt die Nachrichtenschleife einen Platz auf einem Thread A, an dem ein anderer Thread B COM-Objekte anfordern kann Das Leben auf Thread A kann gemarshallt und mit ihm gespielt werden. Wenn das richtig ist, ist Thread A sicher, wenn keine Nachrichtenschleife gepumpt wird, solange keine anderen Threads etwas von den COM-Objekten auf Thread A anfordern? Oder gibt es andere Fälle, in denen die Nachrichtenschleife ebenfalls eine Rolle spielt?

Spiele ich hier mit dem Feuer? Und gibt es jemals einen Fall, in dem Sie sich fragen, ob Sie mit dem Feuer spielen und nicht?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage