Frage

Mögliches Duplikat:
Könnten Sie STA und MTA erklären?

Alle Threadpool -Threads befinden sich in der Multithread -Wohnung.

--Gemäß MSDN

Was bedeutet das?Ich bin wirklich besorgt darüber, was der Unterschied zwischen dem Multi- und dem Single-Threaded-Apartment-Modell ist.Oder was bedeutet das Wohnungsmodell?Ich habe die MSDN darauf gelesen und es ergibt für mich keinen Sinn.Ich glaube, ich habe vielleicht eine Idee, aber ich dachte, jemand hier könnte sie in einfachem Englisch erklären.

Danke, Anthony D.

Update 1

Ich habe es gefundenKönnten Sie STA und MTA erklären?

Kann jemand es genauer beschreiben?

Update 2

Ich suche auch nach einer Antwort, wie sich das auf den Thread-Pool auswirkt und worauf ich aus diesem Grund achten muss.

War es hilfreich?

Lösung

STA (Single-Threaded Apartment) und MTA (Multi-Threaded Apartment) haben damit zu tun COM.COM-Komponenten können für den Zugriff durch einen einzelnen Thread konzipiert werden. In diesem Fall werden sie in einem gehostet STA, oder sie können intern threadsicher gemacht und in einem gehostet werden MTA.Ein Prozess kann nur einen MTA, aber viele STAs haben.Wenn Sie nur COM-Komponenten verwenden möchten, müssen Sie nur wissen, dass Sie das Apartment an die Komponente anpassen müssen, sonst passieren schlimme Dinge.

Andere Tipps

In Wirklichkeit STAs und MTAs haben Auswirkungen auf die .NET-Code. Siehe Chris Brumme Blog-Eintrag für Art und Weise näher dann müssen Sie wahrscheinlich:

https://devblogs.microsoft.com/ cbrumme / Wohnungen-und-Pumpen-in-the-clr /

Es ist wirklich wichtig zu verstehen, wie STAs Meldungen in .NET pumpen. Es muss Konsequenzen haben.

Wenn Ihr COM-Objekt muss glauben, dass es in einer Singlethread-Umgebung ist, verwenden Sie STA. Sie sind, dass die Schaffung garantiert und alle Anrufe werden von dem selben Thread gemacht werden. Sie können sicher verwenden lokalen Speicher Fädeln und Sie brauchen nicht kritische Abschnitte zu verwenden.

Wenn Ihr COM-Objekt kann durch viele Threads gleichzeitig zugegriffen werden, MTA verwenden -. Gibt es keine Wachen in Kraft gesetzt werden

Wie andere haben darauf hingewiesen, es hat in der Regel wenig Einfluss auf die .NET-Anwendungen.

Beachten Sie jedoch, dass die Microsoft-Test-Host für Unit-Tests verwendet, tatsächlich in einem STA implementiert ist, was bedeutet, dass es Beschränkungen auf, was Sie in Unit-Test tun. Zum Beispiel können Sie eine WaitAll auf einem WaitHandle in einem Unit-Test nicht tun Sie verwenden Test-Host von Microsoft.

Sie müssen darüber keine Sorge, wenn Sie COM-Interop tun, in diesem Fall gibt es Rangier-Probleme. Es hat keine Auswirkungen auf .net selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top