C# 在写共享打开的文件上进行原子写入

C# 在写共享打开的文件上进行原子写入,c#,filestream,atomic,C#,Filestream,Atomic,我在writeshare和append模式下从多个进程打开了一个文件流。 有人知道一个无缓冲写操作是否可以被视为原子操作吗 或者我必须开发一种方法来同步不同的写入,以确保数据的安全?我找到了自己的方法 可以使用此构造函数打开文件流 new FileStream(FileName, FileMode.Append, System.Security.AccessControl.FileSystemRights.AppendData, FileShare.ReadWrite,

我在writeshare和append模式下从多个进程打开了一个文件流。 有人知道一个无缓冲写操作是否可以被视为原子操作吗

或者我必须开发一种方法来同步不同的写入,以确保数据的安全?

我找到了自己的方法

可以使用此构造函数打开文件流

new FileStream(FileName,
    FileMode.Append,
    System.Security.AccessControl.FileSystemRights.AppendData,
    FileShare.ReadWrite, 4096, FileOptions.None);
使用System.Security.AccessControl.FileSystemRights.AppendData参数打开流,使用FileMode.Append,操作系统将尝试以原子方式写入缓冲区


如果写入大于缓冲区大小,则操作将不是原子操作,因此必须检查缓冲区大小

否-您需要实现正确的同步。是否可以根据缓冲区大小为这是原子的语句添加源?显然,FileSystemRights不在dotnetstandard 2.0中。