C# sleep. Пауза во время выполнения потока.

System.Threading.Thread.Sleep(50);

Значение задается в милисекундах. При применении в графических приложениях блокирует прорисовку интерфейса, приложение не будет отвечать.

Если во время ожидания требуется выполнение каких-либо действий или проверок, возможно использование другого варианта кода

Stopwatch stopwatch = Stopwatch.StartNew();
while (true)
{
    //some other processing to do possible
    if (stopwatch.ElapsedMilliseconds >= millisecondsToWait)
    {
        break;
    }
}

Либо комбинации с Thread.Sleep

Stopwatch stopwatch = Stopwatch.StartNew();
while (true)
{
    //some other processing to do STILL POSSIBLE
    if (stopwatch.ElapsedMilliseconds >= millisecondsToWait)
    {
        break;
    }
    Thread.Sleep(1); //so processor can rest for a while
}

В промежутках между блокировкой существуют небольшие паузы, которые позволяют процессору выполнять другие операции, например отрисовку.

Thread.Sleep используется когда нужно блокировать текущий поток.

Task.Delay используется, когда нужна логическая пауза без блокировки текущего потока.

async void foo()
{
    // something
    await Task.Delay(50);
}

// .NET 4 (Async CTP)
async void foo()
{
    // something
    await TaskEx.Delay(50);
}

Альтернативный метод не требующий async, вызов в виде

Task.Delay(50).Wait();

Применяется для .NET Framework 4.5 и выше.