C# lock 多线程同步读写文件问题的疑问,希望知道的朋友能帮忙解答一下
//文件操作类
class FileOperate
{
public static Object txtLock = new object ();
public void WriteTxt(string path, string str)
{
lock (txtLock)
{
//文件写操作
}
}
public string ReaderTxt(string path)
{
string str = "";
lock (txtLock)
{
//文件读操作
}
return str;
}
}
在程序多个线程里面用
FileOperate file = new FileOperate();
file.ReaderTxt(path);
操作读写文件...但是线程不能同步..请问应该怎么用?
先前我是把class FileOperate的文件读写方法定义为static的..但是这样做的话..会偶尔读写不执行?怎么回事呢?
新注册.分不多..不好意思
--------------------编程问答-------------------- 我看见论坛有这方面的帖子了..
http://topic.csdn.net/u/20070209/15/3ad90cd1-9566-4c6c-9ec1-5b9320a6618a.html
发表于:2007-02-09 15:34:211楼 得分:30
private static object lockobj =null;
lock(lockobj)
{
writeFileLog
}
我也是仿照这样写的..为什么我就锁不了呢? --------------------编程问答-------------------- 试试将public static Object txtLock = new object ();
中的public换成private --------------------编程问答-------------------- 应该可以同步啊 static的锁是所有类实例共享的 --------------------编程问答-------------------- --------------------编程问答--------------------
应该不是修饰符的问题吧...我其他地方都没有对txtLock操作 --------------------编程问答-------------------- 把代码贴全了,你这样写肯定能同步 --------------------编程问答-------------------- 我也正在做文件多线程同步读写,研究中,帮顶。。。 --------------------编程问答-------------------- lock是锁定多线程所争用的资源的,
确保这个共用资源的值在一个线程内部是可预期的,对它的值是可判断的
楼主所称的,线程同步,还包括其它部分,可否在具体一点,什么叫做
"操作读写文件...但是线程不能同步.." --------------------编程问答-------------------- 学习中。
补充:.NET技术 , C#