Thread.Sleep(n); // Where n is milliseconds
Когда N == 0
Это говорит системе, что вы хотите утратить оставшуюся часть временного интервала потока и позволить другому ожидающему потоку (чей priority> = currentThread) run (это означает, что вы не будете уверены, когда вернете свой элемент управления).
Если нет других потоков с равным приоритетом, готовых к запуску, выполнение текущего потока не приостанавливается.
Когда N> = 1 (будь то N = 1 или N = 2)
Блокирует текущий поток на как минимум число временных интервалов (или квантов потока), которые могут возникнуть в течение n миллисекунд. Другими словами, он безоговорочно передаст sh оставшуюся часть своего временного интервала любому другому потоку.
Планировщик потоков Windows гарантирует, что каждый поток (по крайней мере, с одинаковым приоритетом) получит значительную часть времени ЦП для выполнения. Причина блокирования текущего потока по меньшей мере в указанном интервале заключается в том, что планировщику может потребоваться больше времени, чем указанный интервал, прежде чем он снова доберется до этого потока.
Ссылки: 1 , 2 , 3
Обновление
В моем стремлении найти работу Sleep в версиях до C# 3, я наткнулся на интересные статьи (до 2005 года и до) я чувствовал, что стоит обновить.
Короче говоря, я не нашел никакой разницы в отношении потоков, отказывающихся от более высокого или того же приоритета, когда n = 1 или n = 2.
Из хранилищ: 1 , 2 , 3