我试图使用this新手使用的控制台" outputer"。当我尝试在其上应用循环时,它要么在输出文件中产生大量的行,要么在尝试使用延迟时根本不工作。极为简化的问题版本:
C#:
using (StreamWriter writer = new StreamWriter())
{
Console.SetOut(writer);
while (true)
{
Console.WriteLine("1");
}
}
我几乎尝试了所有可能的方法来实现1秒的延迟(定时器,延迟,动作,睡眠)。在应用StreamWriter之前,每个选项都可以正常工作。在循环内使用延迟什么都不做 - 吨数和#34; 1"在输出文件中。在循环外使用延迟会使输出文件保持空白。 "尝试捕获"什么也没说。伙计们,麻烦在哪里?也许StreamWriter不兼容延迟?
答案 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);
}
}