ฉันมักจะเห็นมันพูดถึงว่าThread.Sleep();
ไม่ควรใช้ แต่ฉันไม่เข้าใจว่าทำไมถึงเป็นเช่นนั้น หากThread.Sleep();
สามารถก่อให้เกิดปัญหามีทางเลือกอื่นใดที่ให้ผลลัพธ์เหมือนกันซึ่งจะปลอดภัยหรือไม่?
เช่น.
while(true)
{
doSomework();
i++;
Thread.Sleep(5000);
}
อีกอันคือ:
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:
Sleep
goto
กลิ่นรหัสมากกว่ากลิ่นดีไซน์ ไม่มีอะไรผิดปกติกับคอมไพเลอร์ที่ใส่goto
รหัสของคุณ: คอมพิวเตอร์ไม่สับสน แต่Thread.Sleep
ไม่เหมือนกันทุกประการ คอมไพเลอร์ไม่แทรกการเรียกนั้นและมีผลเสียอื่น ๆ แต่ใช่ว่าความรู้สึกทั่วไปที่ใช้มันไม่ถูกต้องเพราะมักจะมีทางออกที่ดีกว่านั้นถูกต้องแน่นอน
sleep()
รหัส (หรือทดสอบ) ลูกสุนัขตาย