如何使用C#取消阻止文件?

如何使用C#取消阻止文件?,c#,.net,file,streamwriter,C#,.net,File,Streamwriter,我的C#程序出错,然后我尝试用 newstreamwriter(“myFile.dat”) 这个程序由另一个执行,有时程序的前一个实例会阻塞文件(不知道如何和为什么) 我是否可以在代码中使用任何类型的取消定位来编写文件 这个程序由另一个执行,有时由上一个执行 程序的实例将阻止该文件 因此,您必须在进程之间使用任何同步逻辑,而不是像“解锁文件”这样的黑客解决方案。例如,阅读。您可以尝试使用FileShare.ReadWrite标志打开文件流。例如: new FileStream("myFile.d

我的C#程序出错,然后我尝试用

newstreamwriter(“myFile.dat”)

这个程序由另一个执行,有时程序的前一个实例会阻塞文件(不知道如何和为什么)

我是否可以在代码中使用任何类型的取消定位来编写文件

这个程序由另一个执行,有时由上一个执行 程序的实例将阻止该文件


因此,您必须在进程之间使用任何同步逻辑,而不是像“解锁文件”这样的黑客解决方案。例如,阅读。

您可以尝试使用FileShare.ReadWrite标志打开文件流。例如:

new FileStream("myFile.dat", FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite);

为多个进程提供了写入文件的能力。

我不知道这一点。我甚至认为,如果不使用try-catch,就无法轻松检查文件是否正在使用。X-(是的,我使用try/catch,我在exeption消息中得到了这个错误描述。但是怎么办呢?除非其他程序释放该文件,否则你无能为力。你的意图是什么?不确定,像ReleaseFile()这样的魔术:)其他问题是旧的delphi编写的,而且不可能改变它的行为。@Паааааааааааааааа。因此,Delphi代码也可以使用互斥体。此外,问题中没有任何“德尔菲书面报告”。如果没有同步逻辑,您唯一能做的就是一次又一次地尝试打开文件,直到文件变为空闲。Delphi代码使用什么共享模式?我不知道它使用什么共享模式,我把它作为一个编译程序。无论如何,谢谢你的互斥建议。谢谢,这是最接近我需要的。