我有一个在 Windows 上运行的 .NET6 应用程序,它必须打开并读取一堆文件。我希望这是尽可能非侵入性的,我打开这些文件不应该干扰任何其他进程读取、写入或删除它们。如果另一个进程执行的操作与我的应用程序发生冲突,则该进程应该获胜,并且我的应用程序应该收到错误。
我通过以下方式打开文件:
using var stream = file.Open(
FileMode.Open,
FileAccess.Read,
FileShare.ReadWrite | FileShare.Delete
);
当我的应用程序打开这些文件时,这似乎仍然会干扰有人尝试删除这些文件。
是否可以在 Windows 上以不干扰其他进程对文件执行的任何操作的方式读取文件?
考虑到文件被锁定是 Windows 的事情而不是 C# 的事情,这可能是不可能的。
但我认为如果您使用 FileShare.ReadWrite 这允许其他用户在您使用文件时能够使用这些文件,这可能就是您正在寻找的。这篇文章已经回答了: