Loop Thread.Sleep () seria ruim para o desempenho quando usado para pausar um thread?

Há (ou tem havido) muita conversa sobre se é bom ou ruim usar oThread.Sleep() método. Pelo que entendi, é principalmente para ser usado para fins de depuração.

Agora eu me pergunto: é ruim usar para meu objetivo específico, ou seja, fazer um loop constante para poder pausar / retomar o thread? Faço isso porque quero pausar um encadeamento que executa operações de E / S e poder retomar isso de uma maneira simples.

As operações de E / S estão basicamente gravando blocos de 4096 bytes em um arquivo até que todos os dados tenham sido gravados nele. Como o arquivo pode ser grande e levar muito tempo, desejo poder pausar a operação (caso comece a consumir muitos recursos do sistema).

Meu código, versão do 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 # equivalente:

//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...
}

Ouvi falar do ResetEvents e sei um pouco sobre o que eles fazem, mas nunca realmente gostei muito deles.

questionAnswers(4)

yourAnswerToTheQuestion