Ich habe zufällig eine Intellisense-Tool-Tipp bezüglich des Parameters an System.Threading.Thread.Sleep(int millisecondsTimeout)
übergeben, etwas wie "(...) Geben Sie System.Threading.Timeout.Infinite, um den Thread unbegrenzt zu blockieren". Und ich bin fasziniert.Was wäre ein Anwendungsfall für Thread.Sleep (Timeout.Infinite)?
Ich kann verstehen, warum man kurze inaktive Verzögerungen innerhalb einer möglicherweise endlosen Schleife einschließen kann, wodurch andere ausführende Threads Verarbeitungsleistung erhalten, wenn keine sofortige Aktion im schlafenden Thread erforderlich ist, obwohl ich typischerweise die Implementierung solcher Verzögerungen mit EventWaitHandler
s vorziehe dass ich vermeiden kann, auf eine volle Verzögerung zu warten, wenn ich dem Thread signalisiere, seine Ausführung aus einem anderen Thread zu beenden.
Aber ich kann nicht sehen, wann ich einen Thread auf unbestimmte Zeit anhalten muss, und auf eine Weise, die, soweit ich das beurteilen kann, nur durch ein ziemlich unscharfes Paar unterbrochen werden kann.
Also, was wäre ein Arbeitsszenario, wo ich einen Thread auf unbestimmte Zeit anhalten könnte?
Vielleicht in einer Workflow-bezogenen Aufgabe? Es kann einen Job geben, den Sie einmal im Jahr (oder auf Ad-hoc-Basis) erledigen müssen, und Sie werden erwarten, dass eine Aufgabe (Teil des Workflows) an diesem Jahrestag erscheint, sodass Sie sie bis zu diesem Zeitpunkt schlafen legen würden. Nicht ein ideales Szenario, sondern nur versuchen zu sehen, wo Sie so lange brauchen würden. – kevchadders