2012-09-19 35 views
1

我在我的C#程序得到错误然后我试着写与如何使用C#解锁文件?

new StreamWriter("myFile.dat");

此程序的文件被由程序块的另一个有时候前一个实例文件(不知道如何执行和为什么)。

我可以写文件反正在我的代码中的任何一种unblocikng?

+0

这并不是说我知道。我甚至不认为你可以轻松地检查文件是否正在使用,而不使用try catch。 X-( –

+0

是的,我使用try/catch和我得到的消息exeption此错误的描述,但是做什么呢? –

+0

除非其他程序释放文件,有没有什么可以做的。你有什么内涵? –

回答

1

你可以尝试打开一个FileStream与FileShare.ReadWrite标志。例如:

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

给出了多个进程写入文件的能力。

+0

谢谢,这是我最需要的一个。 –

1

这一方案被通过的程序块另一个有时前面 实例文件

所以,你必须使用进程之间的同步逻辑,如“解锁执行的,而不是哈克解决方案,文件”。例如,阅读约mutexes

+0

另一个问题是旧的Delphi编写的一个,并没有改变其行为的可能性。 –

+0

@ПавелОганесян:互斥是操作系统原始,首先。因此,Delphi代码也可以使用互斥锁。此外,在这个问题上没有任何“delphi写的”。没有同步逻辑,唯一可以做的就是试图一次又一次打开文件,直到它变为空闲为止。 Delphi代码使用什么共享模式? – Dennis

+0

不知道它使用什么共享模式,我把它作为一个编译好的程序。无论如何,感谢互斥建议。 –