Будет ли зацикливание Thread.Sleep () плохим для производительности, когда используется для приостановки потока?

Существует (или было) много разговоров о том, хорошо или плохо использоватьThread.Sleep() метод. Из того, что я понимаю, это в основном для отладки.

Теперь я задаюсь вопросом: это плохо использовать для моей конкретной цели, то есть постоянно зацикливать его, чтобы иметь возможность приостановить / возобновить поток? Я делаю это потому, что хочу приостановить поток, который выполняет операции ввода-вывода, и иметь возможность возобновить его простым способом.

Операции ввода / вывода - это просто запись блоков размером 4096 байт в файл до тех пор, пока в него не будут записаны все данные. Поскольку файл может быть большим и занимать много времени, я хочу иметь возможность приостановить операцию (в случае, если он начнет потреблять много системных ресурсов).

Мой код, версия VB.NET:

'Class level.
Private BytesWritten As Long = 0
Private Pause As Boolean = False

'Method (thread) level.
While BytesWritten < [target file size]
    ...write 4096 byte buffer to file...

    While Pause = True
        Thread.Sleep(250)
    End While

    ...do some more stuff...
End While

C # эквивалент:

//Class level.
long bytesWritten = 0;
bool pause = false;

//Method (thread) level.
while(bytesWritten < [target file size]) {
    ...write 4096 byte buffer to file...

    while(pause == true) {
        Thread.Sleep(250);
    }

    ...do some more stuff...
}

Я слышал о ResetEvents и немного знаю о том, что они делают, но я никогда особо не разбирался в них.

Ответы на вопрос(4)

Ваш ответ на вопрос