在第三方程序中读取文件时不会导致IOException

时间:2013-08-05 13:36:02

标签: c# .net filestream ioexception read-write

我正在阅读第三方程序定期写入的文件。 我正在使用下面的FileStream阅读:

using (FileStream fs = new FileStream(
                         FullPath,
                         FileMode.Open,
                         FileAccess.Read,
                         FileShare.ReadWrite))

但是第三方程序正在写入文件,但正在使用FileShare.None

因此,当第三方程序尝试以独占访问权限打开文件但失败时,我偶尔会打开文件进行阅读。

如何在不引起第三方程序问题的情况下阅读此文件? 我不介意发布我的阅读以优先考虑另一个应用程序。有什么办法吗?

3 个答案:

答案 0 :(得分:1)

您要做的是监控流程创建通知,当您看到特定流程出现时,您将希望摆脱困境。

IWbemServices::ExecNotificationQuery

以下是MSDN的一些其他详细信息。 这也是一个CodeProject:Process Information and Notifications using WMI

答案 1 :(得分:1)

如果此第三方进程(.exe,Windows服务,Web应用程序等)停止,您可以在发生这种情况时访问该文件,如果它永远不会停止或无法确定何时运行,您可以在打开服务器后立即复制此文件。

这取决于您的应用程序的性质和另一个的有效性,以及您需要阅读此文件的频率。

答案 2 :(得分:1)

虽然我没有使用它,您是否尝试使用System.IO.Filestream.Unlock方法来帮助流式传输当前未被其他软件锁定的文件部分?我只是假设其他软件没有锁定整个文件。