Lo vedo spesso menzionato che Thread.Sleep();
non dovrebbe essere usato, ma non riesco a capire perché sia così. Se Thread.Sleep();
può causare problemi, esistono soluzioni alternative con lo stesso risultato che sarebbero sicure?
per esempio.
while(true)
{
doSomework();
i++;
Thread.Sleep(5000);
}
un altro è:
while (true)
{
string[] images = Directory.GetFiles(@"C:\Dir", "*.png");
foreach (string image in images)
{
this.Invoke(() => this.Enabled = true);
pictureBox1.Image = new Bitmap(image);
Thread.Sleep(1000);
}
}
goto:
esempio, probabilmente c'è una soluzione migliore ai tuoi problemi rispetto a Sleep
.
goto
, che è più simile a un odore di codice che a un odore di design. Non c'è niente di sbagliato con un compilatore che inserisce goto
s nel tuo codice: il computer non si confonde. Ma Thread.Sleep
non è esattamente la stessa cosa; i compilatori non inseriscono quella chiamata e ha altre conseguenze negative. Ma sì, l'opinione generale secondo cui usarlo è sbagliato perché c'è quasi sempre una soluzione migliore è certamente corretta.
sleep()
codice (o fai dei test) un cucciolo muore