2013-06-24 25 views
0

我有下面的代码片段,它从一个列表要花线,并写入了他们对盘:的TextWriter不写入磁盘,没有错误

List<string> messages; // a list full of lines of text to write to file 
using (System.IO.TextWriter writer = new System.IO.StreamWriter(stSessionStatusFile, true)) 
{ 
    int i = 0; 
    while (i < messages.Count) 
    { 
     string line = messages[0]; 
     writer.WriteLine(line); 
     writer.Flush(); 
     messages.RemoveAt(0); 
    } 
} 

但是...生成的文件不在磁盘上创建,也没有任何异常抛出。这就像写入磁盘的文本消失在空气中一样。此代码在另一个程序集中工作,但不在我将其移植到的服务中。我不知道为什么在这种情况下文本不会写入磁盘,非常感谢任何帮助解决这个问题。

+0

你怎么知道没有错误?它可能会在实例化StreamWriter时抛出一个异常,并在没有执行任何循环的情况下继续前进。 – catfood

回答

0

我重新启动,一切按预期开始工作。我没有真正解释发生了什么,但我猜测我的电脑是这里的问题,而不是编码器错误。感谢你们的帮助

1

我认为你的i没有递增。在循环内部做i++。也做这个。写入行,在循环外部刷新。还删除RemoveAt移除

foreach(string line in messages) { 
    writer.WriteLine(line) 
} 

writer.Flush(); 
+0

不,我已经介绍了使用调试器,while循环中的代码似乎按预期执行。由于我想在列表中删除列表中的项目,因此我选择使用while循环代替foreach循环,以便在循环中更改集合。我会尝试移动循环外的Flush,看看是否有所作为 –

+0

Youse StreamWriter,而不需要刷新。 http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx – iefpw

0

检查用于运行该服务的凭证......也许你可以尝试写一些将临时文件夹(如C:\ TEMP),看看它是否工作