Non sono d'accordo con la valutazione che Thread.Sleep()
è "cattivo". Dipende dalla situazione.
In un programma in modalità console, potrebbe essere perfettamente appropriato dormire il thread se si sta aspettando qualcosa. Forse anche in un ciclo: controlla le condizioni, dormi un po 'se non è soddisfatto, ripeti.
In un programma grafico, tuttavia, normalmente non si dorme sul thread principale (GUI). Questo perché le interfacce GUI di questi giorni sono progettate con un singolo thread interattivo. Se dormi su quel thread, l'intera GUI sembrerà "bloccata" per il tempo che stai dormendo. Una situazione migliore potrebbe essere quella di utilizzare una sorta di timer (tutti i framework della GUI hanno un tale concetto).
Una cosa che fai non vuoi fare è scrivere un ciclo che controlla continuamente che alcune condizioni siano vere, senza nemmeno dormire. Ciò causerà una CPU fino al 100% perché la CPU vuole eseguire il proprio lavoro il più velocemente possibile. Non solo è inaspettato da un punto di vista dell'utente, ma è scortese perché tale attività può far morire di fame il processo che in realtà stai aspettando un numero sufficiente di cicli per ottenere il lavoro !
fonte
2009-09-21 22:53:05
Voglio invertire quell'articolo, ma non posso. StackOverflow ha rovinato il resto di Internet per me. – MusiGenesis
Desidero che l'articolo spieghi perché il 100% della CPU utilizzata in un ciclo continuo di lavoro sia un'alternativa preferenziale a Thread.Sleep (1). – StingyJack