我有一个进程有2个FileStream对象在同一个文件上运行。 这两个对象打开使用相同的方法将文件:多个文件流在同一个文件导致写入被忽略
file = new FileStream(fullPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
然后我写一些字节他们两个使用write方法,而另一个被忽略,只有最后一个叫写承诺。写使用下面的代码被称为:
fh.file.Write(buffer, 0, count);
buf
等于在两个呼叫"fd"
和count
等于2
我打电话close()
对于后两个对象。程序结束后,输出文件只有两个应该写入的“fd”中的一个。为什么会发生?我试图在两个对象上调用Flush()
,但它没有什么区别。
注意:致电Write()
由同一个线程完成。 最终的执行顺序是这样的:
open_obj1()
open_obj2()
write_obj1("fd")
write_obj2("fd")
close_obj1()
close_obj2()
这似乎是一个简单的问题,但我不能得到问题的所在。两个FileStreams是否在相同的地方读取文件指针,然后尝试写入相同的地方,因为它们都寻找到文件的结尾?如果是的话,如果我想要完全相同的执行顺序,这有什么解决方案?
为什么在同一个文件上需要两个文件流? – Michael
'两个FileStreams是否在同一个地方读取文件指针,然后尝试写入相同的地方,因为它们都寻找文件的末尾?'是 –
@Michael这是一种我需要通过的测试用例。 – mohRamadan