SetApartmentState und [STAThread]

8

In Wattins Quellcode gibt es diesen Code:

%Vor%

Warum wird das [STAThread] -Attribut zur Methode hinzugefügt, weil der erstellte Thread seinen Apartmentstatus festgelegt hat? Ich bin nicht an dem spezifischen Codeabschnitt interessiert, aber ich frage mich, ob STAThread Attribut überhaupt benötigt wird.

Anmerkungen:

  • Die Methode GoToNoWaitInternal wird nicht an anderer Stelle verwendet.
  • Das gesamte wattin-Projekt beschäftigt sich mit der Manipulation von WebBrowser-Objekten (Internet-Explorer-Fenster im Allgemeinen). Daher manipulieren wir ein COM-Objekt.
Odys 28.11.2012, 11:10
quelle

2 Antworten

6

Lesen Sie die Dokumentation für STAThreadAttribute (Hervorhebung von mir):

  

Wenden Sie dieses Attribut auf die Einstiegspunktmethode an (die Methode Main() in C # und Visual Basic). Sie hat keine Auswirkungen auf andere Methoden. Um den Apartment-Status von Threads festzulegen, die Sie in Ihrem Code starten, verwenden Sie die Methode Thread.SetApartmentState , bevor Sie den Thread starten.

In diesem Fall sollte das Attribut keine Auswirkung haben.

    
svick 28.11.2012, 11:26
quelle
3

Es sollte beachtet werden, dass das STA (Single Threaded Apartment) das Threading-Modell ist, das von pre.Net Visual Basic verwendet wird. Es sollte nur für die Main-Methode von Komponenten verwendet werden, die COM ausgesetzt werden. Der Autor des Codes, den Sie zu verstehen versuchen, hat offensichtlich nicht verstanden, wie er verwendet werden soll.

    
Kevin 28.11.2012 11:33
quelle

Tags und Links