当前位置:编程学习 > C#/ASP.NET >>

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的锁是所有类实例共享的  --------------------编程问答-------------------- --------------------编程问答--------------------
引用 2 楼 shamrock19 的回复:
试试将public static Object txtLock = new object ();  
中的public换成private


应该不是修饰符的问题吧...我其他地方都没有对txtLock操作 --------------------编程问答-------------------- 把代码贴全了,你这样写肯定能同步 --------------------编程问答-------------------- 我也正在做文件多线程同步读写,研究中,帮顶。。。 --------------------编程问答-------------------- lock是锁定多线程所争用的资源的,

确保这个共用资源的值在一个线程内部是可预期的,对它的值是可判断的

楼主所称的,线程同步,还包括其它部分,可否在具体一点,什么叫做 

"操作读写文件...但是线程不能同步.." --------------------编程问答-------------------- 学习中。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,