首页 新闻 搜索 专区 学院

多线程情况下,如何锁住一个文件?防止其他进程访问???

0
[已关闭问题] 关闭于 2013-01-09 15:07
 try
            {
                FileInfo fi = new FileInfo("test.html");

                Monitor.Enter(fi);
                WebClient wc = new WebClient();
                wc.DownloadFile("http://www.baidu.com/", "test.html");
                wc.Dispose();
                Console.WriteLine(o.ToString());
                Monitor.Exit(fi);

            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

如何锁住这个 test.html 禁止其他程序访问?

fun5的主页 fun5 | 初学一级 | 园豆:4
提问于:2012-05-25 11:06
< >
分享
所有回答(4)
0

有一個讀 寫的 鎖,你查一下。

http://www.cnblogs.com/Teco/archive/2012/03/24/2415263.html

無限遐想 | 园豆:3740 (老鸟四级) | 2012-05-25 11:12
0

用lock关键字包装不想被其它进程所执行的代码段

David.Meng | 园豆:8 (初学一级) | 2012-05-25 11:16
0

是禁止”test.html"被其他程序读吗?如果你只是要禁止"test.html"在下载时被其他程序写入,那么你不用担心这个问题,因为download往test.html里写入时,已经保证了其他程序此时是无法同时写入的,不需要你代码去控制。如果你想禁止它被其他进程读,这是不可能的(至少我不知道有什么方法可以阻止一个管理员去打开某个文件)。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-05-25 11:41
0
private void button1_Click(object sender, EventArgs e) {
    //要锁住一个文件,得用 独占模式打开文件。
    FileStream file = new FileStream("C:\\aaa", FileMode.CreateNew);
    StreamWriter log = new StreamWriter(file);
    file.Lock(1, 0);
//TODO 写文件的代码
log.WriteLine(DateTime.Now.ToString()); log.Close(); file.Close(); file.Unlock(1, 0); }
三阶 | 园豆:1436 (小虾三级) | 2012-05-25 13:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册