Wie Sie sagen, wenn ein thread den Haupt-thread in C#

Ich weiß, es gibt andere Beiträge, die sagen, Sie können ein Steuerelement erstellen, und dann überprüfen Sie die InvokeRequired - Eigenschaft, um zu sehen, ob der aktuelle thread ist der Haupt-thread ist oder nicht.

Das problem ist, dass Sie haben keine Möglichkeit zu wissen, wenn das control selbst erstellt wurde, auf dem Haupt-thread.

Ich bin mit dem folgenden code zu sagen, wenn ein thread ist der Haupt-thread (der thread, der den Prozess gestartet):

if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA ||
    Thread.CurrentThread.ManagedThreadId != 1 ||
    Thread.CurrentThread.IsBackground || Thread.CurrentThread.IsThreadPoolThread)
{
    //not the main thread
}

Weiß jemand einen besseren Weg? Es scheint, wie diese Art und Weise könnte anfällig für Fehler oder Bruch in zukünftigen Versionen der Laufzeitumgebung.

InformationsquelleAutor der Frage jjxtra | 2010-03-03

Schreibe einen Kommentar