【发布时间】:2009-08-21 19:35:18
【问题描述】:
我正在从服务器下载文件并使用 Process.Start() 打开它,并将文件观察程序附加到文件以捕获任何更改并将它们重新上传到服务器。
是否可以使用 FileWatcher 或任何其他方法确定文件何时关闭?问题是我无法决定如何停止观看该文件并且我不希望它无限期地观看?
有什么想法吗?
提前致谢
乔恩
【问题讨论】:
我正在从服务器下载文件并使用 Process.Start() 打开它,并将文件观察程序附加到文件以捕获任何更改并将它们重新上传到服务器。
是否可以使用 FileWatcher 或任何其他方法确定文件何时关闭?问题是我无法决定如何停止观看该文件并且我不希望它无限期地观看?
有什么想法吗?
提前致谢
乔恩
【问题讨论】:
我所做的是循环播放 5 分钟,然后等待文件可用。这样我可以给它时间来释放,但仍然有一个确定的时间。如果它在我的系统中 5 分钟仍未清除,那肯定是错误的。你应该根据你的情况设定你的时间限制。我从某个地方得到这个想法,现在不知道在哪里了。
DateTime EndTime = System.DateTime.Now.AddMinutes((double)timeOut);
while (System.DateTime.Now <= EndTime)
{
try
{
using (Stream stream = System.IO.File.Open(filename, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
if (stream != null)
{
break;
}
}
}
catch (FileNotFoundException)
{
//
}
catch (IOException)
{
//
}
catch (UnauthorizedAccessException)
{
//
}
System.Threading.Thread.Sleep(sleepTime);
}
【讨论】: