Ich weiß, dass ich einen neuen Arbeitsthread mit .NET starten kann. Aber wie starte ich einen neuen UI-Thread (wie in MFC)?
Es macht mir nichts aus, wenn die Lösung nur auf Windows-Boxen beschränkt ist; Ich möchte auch, dass die Lösung rein .NET ist - kein p / ruft CreateThread, etc.
Jede Eingabe wird geschätzt.
Verwenden Sie Application.Run
- es startet eine Nachricht Schleife im aktuellen Thread. Es gibt Überladungen, die zu Beginn mit einem Formular beginnen, oder einen Anwendungskontext oder keines von beiden. (Wenn Sie dies für einen neuen -Thread tun möchten, müssen Sie den Thread erstellen und auf die normale Weise starten und Application.Run
aufrufen.)
Wenn Sie WPF verwenden möchten, lesen Sie den MSDN-Artikel WPF-Threading-Modell in insbesondere der Abschnitt "Mehrere Windows, mehrere Threads". Es beschreibt, was Sie tun müssen, um einen neuen Dispatcher zu erstellen und ein Fenster für einen neuen Thread anzuzeigen.
Wenn Sie einen neuen Thread erstellen möchten, der Window-Handles erstellen und bearbeiten kann, können Sie die Funktion SetApartmentState
für das Thread-Objekt verwenden und sie auf STA
setzen. Sie müssen wahrscheinlich auch Application.Run
in der Methode für diesen Thread aufrufen, um Ihre Nachrichtenschleife zu erstellen. Beachten Sie jedoch, dass Sie den gleichen Cross-Threading-No-No's unterliegen, die Sie in einem anderen Thread haben (dh Sie können nur mit dem Handle interagieren, um ein Steuerelement für den Thread zu erstellen, in dem es erstellt wurde) Sie können auf Ihrem anderen UI-Thread nichts tun, ohne den Kontext zu wechseln.
Tags und Links .net c# user-interface multithreading