Я часто вижу, что он упоминал, что 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);
    }
}