-5

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

4

4 回答 4

2

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

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

于 2013-08-29T08:19:51.207 回答
1

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

这第三个程序可以是一个 MSMQ,或一个 Windows 服务,或一组 Web 服务,或任何东西 - 这取决于您的要求......

于 2013-08-29T08:22:32.907 回答
0

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

于 2013-08-29T08:25:32.750 回答
0

以防止竞争状况。您将不得不实施 try-wait-retry 选项。

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

于 2013-08-29T08:21:23.217 回答