如何延迟 StreamWriter 循环?

How to delay the StreamWriter loop?

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

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

我已经尝试了几乎所有可能的方法来延迟 1 秒(计时器、延迟、动作、睡眠)。在我应用 StreamWriter 之前,每个选项都可以正常工作。在循环内使用延迟没有任何作用 - 输出文件中有大量行“1”。在循环外使用延迟使输出文件保持为空。 "Try-Catch" 什么也没说。大佬们,难在哪里?也许 StreamWriter 不兼容延迟?

您的文件只会在 using 块结束时关闭并确定写入。以前,实际 写入 文件取决于您的操作系统和磁盘的缓存机制。

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

您可以使用 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);
    }
}