Würde das Schleifen von Thread.Sleep () die Leistung beeinträchtigen, wenn ein Thread angehalten wird?

Es wird (oder wurde) viel darüber geredet, ob es gut oder schlecht ist, das @ zu benutzeThread.Sleep() Methode. Soweit ich weiß, ist es hauptsächlich zum Debuggen gedacht.

Nun frage ich mich: Ist es schlecht, es für meinen speziellen Zweck zu verwenden, das heißt, es ständig in einer Schleife abzuspielen, um in der Lage zu sein, den Thread anzuhalten / fortzusetzen? Ich mache das, weil ich einen Thread anhalten möchte, der E / A-Vorgänge ausführt, und ihn auf einfache Weise fortsetzen kann.

Die E / A-Operationen schreiben im Grunde nur Blöcke von 4096 Byte in eine Datei, bis alle Daten in diese geschrieben wurden. Da die Datei möglicherweise sehr groß ist und sehr lange dauert, möchte ich den Vorgang anhalten können (für den Fall, dass sie anfängt, viele Systemressourcen zu verbrauchen).

Mein Code, VB.NET-Version:

'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 # -Äquivalent:

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

Ich habe von ResetEvents gehört und weiß ein bisschen, was sie tun, aber ich habe mich nie wirklich mit ihnen befasst.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage