Wie erkenne ich, ob wir uns in einem UI-Thread befinden?

Aus Gründen des Arguments betrachten Sie einen UI-Thread als einen Thread, zu dem ein Aufruf erfolgt istApplication.Run() oder eine seiner Überladungen hat es aufgerufen und eine aktive Nachrichtenschleife läuft.

Gibt es eine Möglichkeit zu erkennen, ob wir gerade einen solchen Thread ausführen?

Der Grund, warum ich das möchte, ist, dass ich eine Klasse mit einer privaten Funktion habe, die lange läuft. Die Klasse selbst ist bereits Multithread-fähig, und die Verwendung dieser Klasse ist so, dass sie entweder von der Benutzeroberfläche oder von Hintergrundthreads verwendet werden kann, die die Verarbeitung ausführen. Diese Funktion fällt auch in dieses Netz. Aber ich möchte nicht, dass der UI-Thread blockiert wird. Ich möchte also feststellen, ob ich auf einem UI - Thread arbeite, und wenn ja, den Funktionsaufruf in einen Hintergrundthread verzweigen (wahrscheinlichThreadPool, aber das ist kein Thema für diese Diskussion). Dies ist völlig in Ordnung, aber die Hintergrund-Threads verlassen sich wahrscheinlich auf die Ausgabe der Funktion, weshalb das Blockieren für sie besser ist, wohingegen der UI-Thread auf diese Weise "set-and-forget" zugreift.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage