本文实例讲述了C#实现多线程写入同一个文件的方法。分享给大家供大家参考。具体实现方法如下:
?| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
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#程序设计有所帮助。








发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。