如何延迟StreamWriter循环?

时间:2015-03-14 20:17:08

标签: c# loops streamwriter

我试图使用this新手使用的控制台" outputer"。当我尝试在其上应用循环时,它要么在输出文件中产生大量的行,要么在尝试使用延迟时根本不工作。极为简化的问题版本:
C#:

using (StreamWriter writer = new StreamWriter())
{
    Console.SetOut(writer); 
    while (true)
    {
        Console.WriteLine("1");
    }
}

我几乎尝试了所有可能的方法来实现1秒的延迟(定时器,延迟,动作,睡眠)。在应用StreamWriter之前,每个选项都可以正常工作。在循环内使用延迟什么都不做 - 吨数和#34; 1"在输出文件中。在循环外使用延迟会使输出文件保持空白。 "尝试捕获"什么也没说。伙计们,麻烦在哪里?也许StreamWriter不兼容延迟?

2 个答案:

答案 0 :(得分:-1)

只有在using块结束时,您的文件才会被关闭并写入。以前,它可以通过操作系统和磁盘的缓存机制来实际文件。

你的循环永远不会结束。您的文件可能永远不会被写入。确保您的循环可以正常终止,并且使用块可以关闭文件。

答案 1 :(得分:-1)

您可以使用Thread.Sleep并指定要在循环中睡眠的时间跨度。您还需要在某个时刻终止循环,例如:

using (StreamWriter writer = new StreamWriter("c:\\temp\\temp.txt"))
{
    Console.SetOut(writer);

    for (int i = 0; i < 10; i++)
    {
        Thread.Sleep(TimeSpan.FromSeconds(1));
        Console.WriteLine("{0}: {1}", DateTime.Now.ToShortTimeString(), i);
    }
}
相关问题