多线程操作同一个文件,向文件写数据,为什么线程锁不住?各位请进
这个问题已经困扰我好久了,请各位高手帮忙,先谢谢大家了
我的线程是单独放在一个类里面,通过创建这个类的对象来创建线程,本来想用锁来控制线程,但是线程是在不同对象里的,所以没法控制,用lock,mutex,monitor都没用,但现在又遇到多线程写同一个文件这个问题,真是这个问题搞死了,
我的结构如下:
class A
{
..........
private void bt_select_Click(object sender, System.EventArgs e)
{
....
for(int i=0;i <xmllist.Count;i++)
{
B b=new B(xmllist[i],i);
}
....
}
..........
}
Class B
{
......
public B(string ip,string i)
{
Thread thd = new Thread(new ThreadStart(ExcuteImport));
j=i+1;
thd.Name= "线程 "+j+ ",支队ip: "+ip;
sb_log.Append( "/*******************************/ ");
sb_log.Append( "【 "+thd.Name+ "】 ");
thd.Start();
}
.......
private void writeFileLog()
{
DateTime dt=DateTime.Now;
FileStream fs;
string path=Directory.GetCurrentDirectory()+ "\\log\\ ";
string filename=dt.ToString( "d ")+ ".log ";
StreamWriter writeFileLog;
if(!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
fs=new FileStream(path+filename,FileMode.OpenOrCreate,FileAccess.Write,FileShare.ReadWrite);
writeFileLog=new StreamWriter(fs);
writeFileLog.Write(sb_log);
writeFileLog.Close();
fs.Close();
}
}
------解决方案--------------------你可以看看
http://blog.csdn.net/tjvictor/archive/2007/01/20/1488290.aspx