Tôi thường thấy nó được đề cập rằng Thread.Sleep();
không nên sử dụng, nhưng tôi không thể hiểu tại sao nó lại như vậy. Nếu Thread.Sleep();
có thể gây rắc rối, có giải pháp thay thế nào có cùng kết quả sẽ an toàn không?
ví dụ.
while(true)
{
doSomework();
i++;
Thread.Sleep(5000);
}
một số khác là:
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:
có nghĩa là có một giải pháp tốt hơn cho các vấn đề của bạn hơn Sleep
.
goto
, giống như mùi mã hơn là mùi thiết kế. Không có gì sai với trình biên dịch chèn goto
s vào mã của bạn: máy tính không bị lẫn lộn. Nhưng Thread.Sleep
không hoàn toàn giống nhau; trình biên dịch không chèn cuộc gọi đó và nó có những hậu quả tiêu cực khác. Nhưng vâng, quan điểm chung rằng sử dụng nó là sai bởi vì hầu như luôn luôn có một giải pháp tốt hơn chắc chắn là chính xác.
sleep()
mã (hoặc kiểm tra), một con chó con sẽ chết