Warum hängt Thread.Join () meine Anwendung NICHT, wenn sie im UI-Thread aufgerufen wird?

ach meinem Verständnis (ich bin nicht gut im Threading) blockiert Join () das Aufrufen von Thread, bis Thread, auf dem Join () aufgerufen wird, zurückgib

Wenn dies zutrifft und Join () vom UI-Thread aufgerufen wird, macht das Erstellen des neuen Threads für einige lange Betriebszeiten keinen Sinn. Es gibt Fragen zu SO, die fragen, warum Join () die Anwendung hängt. Es sieht für mich natürlich aus.

Übrigens, auch wenn es natürlich aussieht, verhält sich meine Anwendung nicht entsprechend. Meine Anwendung hängt nicht.

Code ohne Thread, der Anwendung hängt: -

string retValue = "";
retValue = LongRunningHeavyFunction();
txtResult.Text = retValue;

Code mit Thread, der die Anwendung NICHT hängt: -

string retValue = "";
Thread thread = new Thread(
() =>
{
    retValue = LongRunningHeavyFunction();
});
thread.Start();
thread.Join();
txtResult.Text = retValue;

Über Code funktioniert hervorragend ohne hängende Anwendung. Funktionsaufruf dauert ca. 15-20 Sekunden. Warum hängt die Anwendung nicht?

Dies ist kein Problem für mich; Eigentlich ist es eine gute Nachricht. Aber ich verstehe einfach nicht, welchen Unterschied es machte? Es stimmt nicht mit dem überein, was ich lese und lerne.

Ich verwende DotNet Framework 4.0, wenn es darauf ankommt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage