有(或者已经有)很多关于使用 Thread.Sleep() 方法的好坏的讨论 . 据我所知,它主要用于调试目的 .
现在我想知道:用于我的特定目的是不是很糟糕,也就是说,不断循环它以便能够暂停/恢复线程?我这样做是因为我想暂停一个执行I / O操作的线程,并能够以一种简单的方式恢复它 .
I / O操作基本上只是将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,我对他们的所作所为有所了解,但我从未真正了解过它们 .