并发读写文本文件

最近开发一小软件,由于经常要记录运行中的一些信息,而程序又涉及多线程,

这样就引发了一新的问题——线程读写文件时由于并发引起的异常。

  1. public class log
  2. {  
  3.         private static List strErrs = new List();
  4.         /// 
  5.         /// 标记是否在执行写任务
  6.         /// 
  7.         private static int tag = 0;
  8.         /// 
  9.         /// 发生错误的异常记录
  10.         /// 
  11.         /// 类名
  12.         /// 方法名
  13.         /// 错误信息
  14.         public static void WriteErr(String Class, String Method, String Err)
  15.         {
  16.             strErrs.Add("[" + DateTime.Now + "] [" + Class + "] [" + Method + "] [" + Err + "]");
  17.             if (tag++ == 0)
  18.             {
  19.                 WriteErr();
  20.             }
  21.         }
  22.         
  23.         private static void WriteErr()
  24.         {
  25.             StreamWriter sw = null;
  26.             try
  27.             {
  28.                 sw = File.AppendText(AppPath + errTxt);
  29.                 while (strErrs.Count > 0)
  30.                 {
  31.                     sw.WriteLine(strErrs[0]);
  32.                     sw.WriteLine();
  33.                     strErrs.RemoveAt(0);
  34.                 }
  35.                 sw.Flush();
  36.                 sw.Close();
  37.                 tag = 0;
  38.             }
  39.             catch (Exception ex)
  40.             {
  41.                 throw ex;
  42.             }
  43.             finally
  44.             {
  45.                 try
  46.                 {
  47.                     if (sw != null) sw.Close();
  48.                 }
  49.                 catch (Exception ex)
  50.                 {
  51.                     throw ex;
  52.                 }
  53.             }
  54.         }
  55. }

 

把这段代码写在一类里面,然后只要调用WriteErr方法就可以了

 

        

你可能感兴趣的:(并发读写文本文件)