我在C#中有一个程序,我使用while循环来读取文件中的行。我希望能够每5秒左右显示行号,而不会减慢while循环,这样用户就可以看到它们的距离。任何想法如何做到这一点?
CODE
{{1}}
答案 0 :(得分:3)
您可以使用BackgroundWorker类来实现此目的。只需看看有关如何初学该课程的MSDN示例。
您可以使用ReportProgress调用为BackgroundWorker创建“DoWork”方法,如下所示:
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
Stopwatch sw = Stopwatch.StartNew();
using (StreamReader sr = new StreamReader(@"path"))
{
String line;
int lines = 0;
using (System.IO.StreamWriter file = new System.IO.StreamWriter("path"))
{
while ((line = sr.ReadLine()) != null)
{
file.WriteLine(CreateMD5(line)+':'+line);
worker.ReportProgress(lines++);
}
}
}
}
要显示进度,您只需在ProgressChanged事件中使用Console.WriteLine()。