记录和刷新.net

时间:2009-05-28 22:49:16

标签: .net file-io

我的程序看起来像这样:

public partial class It
{
    static StreamWriter logging 
       = new StreamWriter(new FileStream(@"C:\log",FileMode.Create));

    void someFn()
    {
       logging.WriteLine("foo");
       logging.Flush();

       /// killed here in debugger with Shift+F5
    }
}

文件没有以“foo”结尾的问题,似乎没有发生冲洗。我在这里滥用什么东西吗?我需要一个“当我返回时位于文件中的位”功能,是否存在这样的事情?

理想的情况是,如果我在那一点上突破,另一个过程将会看到写下最后一行。

3 个答案:

答案 0 :(得分:2)

我记得我也遇到过这个问题。 我认为你必须刷新底层的FileStream而不是StreamWriter

答案 1 :(得分:1)

我认为你的代码应该像你期望的那样工作。我想知道你是否将构建模式设置为Release和/或在调试器中看到的源代码与实际执行的代码之间存在差异。如果项目设置为在发布模式下构建,则优化器可能会移动一些代码,而您所在的源代码行可能无法准确表示优化代码中发生的情况。

答案 2 :(得分:0)

请您尝试使用此代码告诉我们结果:

class Program
{
    static void Main(string[] args)
    {
        StreamWriter foo = new StreamWriter(new FileStream(@"C:\foo.txt", FileMode.Create));
        foo.WriteLine("foo");

        StreamWriter bar = new StreamWriter(new FileStream(@"C:\bar.txt", FileMode.Create));
        bar.WriteLine("bar");
        bar.Flush();
    }
}