我可以在 FileStream 在 C# 中关闭句柄后重新打开句柄吗?

Can i re-open a handle after FileStream close it in c#?

我想知道我是否可以在 FileStream 关​​闭句柄后重新打开它??

这是我的代码

static void Main(string[] args)
    {

        string path = "Hello";
        SafeFileHandle handle = File.Open(path, FileMode.OpenOrCreate).SafeFileHandle;
        using (FileStream fs1 = new FileStream(handle, FileAccess.ReadWrite))
        {
            // do some work
        }
        using (FileStream fs2 = new FileStream(handle, FileAccess.ReadWrite))
        {
            // do some work
        }

        Console.ReadKey();
    }

我在声明 fs2 时收到错误“句柄已关闭”。

谢谢:)

没有。该句柄在文件打开时获得,关闭后失效。只需保持文件打开即可。

OS 为分配的任何资源保留一个句柄映射——实际上,只是整数 ID。当您释放(或者,在本例中,关闭)资源时,该映射条目将被删除,并且获得的所有锁都将被释放。使用该句柄的任何进一步调用都将从映射搜索句柄开始,该句柄已被删除,因此...

不会工作。要么重新打开文件,要么在必要时找到保持打开状态的方法。不过,真的 - 我鄙视锁定文件的实现。绝大多数执行此操作的应用程序实际上不必这样做,而且只会导致问题。打开文件、加载数据、关闭文件、修改数据并根据需要转储。将文件保持打开的时间超过一次函数调用的时间非常非常少。