C# 如何同时多次打开文件

C# 如何同时多次打开文件,c#,filestream,C#,Filestream,我试图打开一个文件进行读/写访问,然后再次打开它(仅限读访问),但我不断收到一个错误消息,说第二次无法访问该文件,因为另一个进程(第一个进程)正在使用该文件 我知道参数“FileShare.Read”允许我在不关闭第一个流的情况下再次打开文件进行读取。。。有人能告诉我我的错误在哪里吗?比较访问模式和共享模式 File1是开放的FileAccess.ReadWrite和FileShare.Read--我相信它可以按照您的意愿运行 File2是开放的FileAccess.Read和FileShare

我试图打开一个文件进行读/写访问,然后再次打开它(仅限读访问),但我不断收到一个错误消息,说第二次无法访问该文件,因为另一个进程(第一个进程)正在使用该文件


我知道参数“FileShare.Read”允许我在不关闭第一个流的情况下再次打开文件进行读取。。。有人能告诉我我的错误在哪里吗?

比较访问模式和共享模式

File1是开放的FileAccess.ReadWrite和FileShare.Read--我相信它可以按照您的意愿运行

File2是开放的FileAccess.Read和FileShare.Read。但是,File1打开了FileAccess.ReadWrite。open仅允许读取,因此失败


第二次打开需要FileShare.ReadWrite才能正常工作。注意这里的缓存问题。

可能是重复的:尝试使用
FileShare.ReadWrite
。这是否回答了您的问题?非常感谢你。这是一个直接的解决方案,它满足了我的需要。我对FileShare参数的行为感到困惑。
// Open a file for read/write and then only for read without closing the firts stream

string FileName = "C:\\MisObras\\CANCHA.REC"; // Replace this with any existing folder\file 
FileStream File1 = null,
        File2 = null;
try
{
    File1 = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
    MessageBox.Show("File1 is Open for Read/Write", "", MessageBoxButtons.OK, MessageBoxIcon.Information);

    File2 = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read);
    MessageBox.Show("File2 is Open for Read", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
} catch (Exception e)
{
    System.Windows.Forms.MessageBox.Show (e.Message,"Error de Archivo", System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);
}

if (File1 != null) File1.Close();
if (File2 != null) File2.Close();