C#有两个程序读取和写入同一文本文件

时间:2013-08-29 08:17:20

标签: c#

有没有办法让第一个程序写入文本文件,而程序会等到文本文件没有被另一个进程使用。

4 个答案:

答案 0 :(得分:2)

您可以在第二个程序中使用FileSystemWatcher类,以查看第一个程序何时完成。如果已创建,修改或删除文件,FileSystemWatcher将触发事件。

更多信息:http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

答案 1 :(得分:1)

最好的方法是实现充当队列的第3个程序。您的前2个程序将数据发送到此程序,该程序将实际写入文本文件。

这第三个程序可能是MSMQ,Windows服务,或一组网络服务,或任何其他 - 这取决于您的要求......

答案 2 :(得分:0)

防止比赛状况。您必须实现try-wait-retry选项。

尝试从文件中读取 如果失败则等待一段时间再试一次

答案 3 :(得分:0)

是。您将每个逻辑写入放在队列的末尾。在另一个线程中,您从队列前面读取逻辑写入并尝试将它们写入文件(打开文件,写入,关闭文件);如果在此期间发生IOException,则将写入保留在队列的前面,否则将其从队列的前面删除。如果两个进程都遵循此模式,则它们将能够将写入交错到文件。