我用了StreamWriter.flush()
但是总是报无法写入已关闭的 TextWriter。  public class WriteLog
    {
        //public static string LogPath = string.Empty;
        static StreamWriter LogStreamWriter = new StreamWriter(@"F:\log\log.txt", true);
        public static void WriteLogFun(string LogContent) 
    {            LogStreamWriter.WriteLine("{0},{1}", DateTime.Now.ToString(),LogContent);
            LogStreamWriter.Flush();
            LogStreamWriter.Close();    
    }请教高手

解决方案 »

  1.   

    用 FileStream 和 StreamWriter 结合使用应该没有问题。
    Demo 网上有。
      

  2.   

    WriteLogFun  这个函数被你调用多次的吧?
      

  3.   

    你的LogStreamWriter 是全局变量,这样重复调用WriteLogFun()就会有问题 public static void WriteLogFun(string LogContent)
              {
                  StreamWriter LogStreamWriter = new StreamWriter(@"F:\log.txt", true);
                  LogStreamWriter.WriteLine("{0},{1}", DateTime.Now.ToString(), LogContent);
                  LogStreamWriter.Flush();
                  LogStreamWriter.Close();
              }
    把它放到里边就行了
      

  4.   

    或者把 LogStreamWriter.Close();这句去掉
      

  5.   

    private static  StreamWriter LogStreamWriter = null;
      public static void WriteLogFun(string LogContent)
      {
          LogStreamWriter = new StreamWriter(@"F:\log.txt", true);
          LogStreamWriter.WriteLine("{0},{1}", DateTime.Now.ToString(), LogContent);
          LogStreamWriter.Flush();
          LogStreamWriter.Close();
      }
    需要的时候打开,关闭。不要一上来就占用静态资源
      

  6.   

    不是占用,而是滥用。并不在乎那点存储(算算浪费了几毛钱?),而是static很容易与随意操作它的不负责任代码纠缠一起出现。
      

  7.   

    把StreamWriter定义在你函数里面即可.因为关闭之后会Disponse掉的
    楼上说的把Close那句去掉也有问题的,第二次执行的时候会有异常抛出,提示你文件正在被使用.
      

  8.   

    除非你写到using(){...}中,否则关闭之后只会等待GC来处理,而并不保证立刻Dispose。于是关闭之后如果立刻有程序操作文件,仍然会经常出现文件被占用而无法打开的问题。