Ich bin nicht der Einschätzung, dass Thread.Sleep()
ist "schlecht". Es hängt von der Situation ab.
In einem Konsolen-Modus-Programm kann es durchaus angemessen sein, den Thread zu schlafen, wenn Sie auf etwas warten. Vielleicht sogar in einer Schleife: Überprüfen Sie den Zustand, schlafen Sie ein wenig, wenn es nicht zufrieden ist, wiederholen.
In einem grafischen Programm würden Sie jedoch normalerweise nicht auf dem Hauptthread (GUI) schlafen. Dies liegt daran, dass heutzutage GUI-Schnittstellen mit einem einzigen interaktiven Thread entworfen werden. Wenn Sie in diesem Thread schlafen, scheint Ihre gesamte GUI für die Zeit, in der Sie schlafen, zu sperren. Eine bessere Situation könnte eine Art Timer sein (alle GUI-Frameworks haben ein solches Konzept).
Eine Sache, die Sie tun nicht wollen Sie tun, ist eine Schleife schreiben, die ständig nach einer Bedingung überprüft, um wahr zu sein, ohne sogar zu schlafen. Dies führt dazu, dass eine CPU zu 100% läuft, weil die CPU ihre Arbeit so schnell wie möglich erledigen will. Dies ist nicht nur aus Benutzersicht unerwartet, aber es ist unfreundlich, weil eine solche Aktivität den Prozess, auf den Sie eigentlich warten, von genügend Zyklen verhungern kann, um seine Arbeit erledigt zu bekommen!
Ich möchte diesen Artikel upvote, aber ich kann nicht. StackOverflow hat den Rest des Internets für mich ruiniert. – MusiGenesis
Ich möchte diesen Artikel erklären, warum 100% CPU-Nutzung in einer kontinuierlichen Worker-Schleife eine bevorzugte Alternative zu Thread.Sleep (1) ist. – StingyJack