好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#实现多线程写入同一个文件的方法

本文实例讲述了C#实现多线程写入同一个文件的方法。分享给大家供大家参考。具体实现方法如下:

?

namespace WfpApp

{

  public partial class Form2 : Form

  {

   object obj = new object ();

   public Form2()

   {

    InitializeComponent();

    System.Threading.Thread thread;

    string [] users = new string [] { "zkk" , "admin" , "administrator" , "soft" , "iany" , "nec" , "necsl" };

    for ( int i = 0; i < users.Length; i++)

    {

     thread = new System.Threading.Thread( new System.Threading.ParameterizedThreadStart(WriteLock));

     thread.Start(users[i]);

    }

   }

   public void WriteThread( object user)

   {

    string path = System.Windows.Forms.Application.StartupPath + "\\app\\" ;

    if (!System.IO.Directory.Exists(path))

     System.IO.Directory.CreateDirectory(path);

    path = path + "\\" + DateTime.Now.ToString( "yyyyMMdd" ) + ".txt" ;

    StringBuilder sb = new StringBuilder();

    sb.AppendLine( "----------------------------" + DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss.fff" ) + "--------------------------" );

    sb.AppendLine(user.ToString());

    sb.AppendLine( "---------------------------------------------------------------------------------" );

    sb.AppendLine();

    //if (!System.IO.File.Exists(path))

    // System.IO.File.Create(path).Close();

    System.IO.FileStream fileStream = new System.IO.FileStream(path, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite);

    System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream, Encoding.Default);

    sw.Write(sb.ToString());

    sw.Close();

    sw.Dispose();

    fileStream.Close();

    fileStream.Dispose();

   }

   public void WriteLock( object user)

   {

    lock (obj)

    {

     string path = System.Windows.Forms.Application.StartupPath + "\\app\\" ;

     if (!System.IO.Directory.Exists(path))

      System.IO.Directory.CreateDirectory(path);

     path = path + "\\" + DateTime.Now.ToString( "yyyyMMdd" ) + ".txt" ;

     StringBuilder sb = new StringBuilder();

     sb.AppendLine( "----------------------------" + DateTime.Now.ToString( "yyyy-MM-dd HH:mm:ss.fff" ) + "--------------------------" );

     sb.AppendLine(user.ToString());

     sb.AppendLine( "---------------------------------------------------------------------------------" );

     sb.AppendLine();

     if (!System.IO.File.Exists(path))

      System.IO.File.Create(path).Close();

     System.IO.FileStream fileStream = new System.IO.FileStream(path, System.IO.FileMode.Append, System.IO.FileAccess.Write);

     System.IO.StreamWriter sw = new System.IO.StreamWriter(fileStream, Encoding.Default);

     sw.Write(sb.ToString());

     sw.Close();

     sw.Dispose();

     fileStream.Close();

     fileStream.Dispose();

    }

   }

  }

}

希望本文所述对大家的C#程序设计有所帮助。

dy("nrwz");

查看更多关于C#实现多线程写入同一个文件的方法的详细内容...

  阅读:82次