是否会发生过程锁定?

时间:2013-01-08 17:02:30

标签: c# multithreading

我正在尝试编写一个小程序,它可以让不同计算机上的用户同时修改同一个文件(在所有用户都可以访问的目录中)并查看其他用户同时进行的更改。每次用户修改文件时,更改都将保存到文件(.txt)中,我使用FileSystemWatcher检测更改并使用更改更新其他用户。

我注意到我会收到一条消息说无法访问该文件,因为如果我尝试在我的程序运行并访问同一文件时使用记事本修改并保存文件,则另一个进程正在访问该文件。我的问题是,如果在我的程序开发并在不同的计算机上运行后,我会收到相同的错误消息吗?如果是的话,无论如何都要解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

这是可能的,但您需要像这样使用完整版System.IO.File.Open(),这允许其他进程打开相同的文件以进行读写访问。

using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream f = File.Open("c:\file.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
        }
    }
}