首页 > 编程 > C# > 正文

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

2020-01-24 01:30:57
字体:
来源:转载
供稿:网友

本文实例讲述了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#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表