【发布时间】:2013-06-23 08:03:10
【问题描述】:
当我调用这个函数时,它只会打开几个空的记事本窗口,但是如果我在运行后打开 text2 文件,它会显示所有输入的行...我什至尝试刷新以写入缓冲区中的所有内容,但是没有帮助。
static void finish()
{
FileStream fs2 = new FileStream("C:\\Users\\ayush.mishra\\Desktop\\text2.txt", FileMode.Create, FileAccess.Write);
using(StreamWriter s = new StreamWriter(fs2))
{
s.WriteLine("This Notepad will self destruct in....");
fs2.Flush();
Process notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
for (var i = 0; i < 40000000.00; i++);
notepadProcess2.CloseMainWindow();
s.WriteLine(" ****** 5 ****** ");
fs2.Flush();
notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
for (var i = 0; i < 400000000; i++);
notepadProcess2.CloseMainWindow();
s.WriteLine(" ****** 4 ****** ");
fs2.Flush();
notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
for (var i = 0; i < 400000000; i++);
notepadProcess2.CloseMainWindow();
s.WriteLine(" ****** 3 ****** ");
fs2.Flush();
notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
for (var i = 0; i < 400000000; i++);
notepadProcess2.CloseMainWindow();
notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
s.WriteLine(" ****** 2 ****** ");
fs2.Flush();
for (var i = 0; i < 400000000; i++);
notepadProcess2.CloseMainWindow();
notepadProcess2 = Process.Start("C:\\Users\\ayush.mishra\\Desktop\\text2.txt");
s.WriteLine(" ****** 1 ****** ");
fs2.Flush();
for (var i = 0; i < 400000000; i++);
notepadProcess2.CloseMainWindow();
}
}
有什么建议吗?
【问题讨论】:
-
文件被锁定,在这种情况下记事本可能只显示空文件而不是错误消息。
-
您可能希望使用
Thread.Sleep()或Timer来进行计时,而不是遍历循环。即使将一个 int 递增 4 亿次需要 1 秒,但在 10 年后,在 CPU 速度更快的现代 PC 上它会瞬间结束。出于类似的原因,一些最古老的视频游戏在现代 PC 上变得无法播放。 -
关闭 FileStream 而不是刷新它。或者尝试使用FileSharing option 调用构造函数,但由于您正在创建新文件,因此可能没有帮助。
-
@ShadowWizard 我让我通过一个线程同时打开了另一个文本文件,该线程显示锁定没有任何问题的数据..
-
@Artemix 关闭文件会有什么帮助。因为我避免尝试这样做,因为它看起来太麻烦了...
标签: c# file-io streamwriter notepad