Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FileSystemWatcher-如何确定文件何时关闭?_C#_.net_File Io - Fatal编程技术网

C# FileSystemWatcher-如何确定文件何时关闭?

C# FileSystemWatcher-如何确定文件何时关闭?,c#,.net,file-io,C#,.net,File Io,我正在从服务器下载一个文件,并使用Process.Start()打开它,并将一个文件监视程序附加到该文件以捕获任何更改并将其重新上载到服务器 是否仍然可以使用FileWatcher或任何其他方法确定文件何时关闭?问题是我无法决定如何停止观看该文件,我不希望它被无限期地观看 有什么想法吗 提前谢谢 Jon我做的是做一个5分钟的循环,然后观察文件是否可用。这样我可以给它时间释放,但仍然有一个确定的时间。如果我的系统在5分钟前还没有清除,那肯定是出了问题。你应该根据自己的情况设定时间限制。我从某个地方

我正在从服务器下载一个文件,并使用Process.Start()打开它,并将一个文件监视程序附加到该文件以捕获任何更改并将其重新上载到服务器

是否仍然可以使用FileWatcher或任何其他方法确定文件何时关闭?问题是我无法决定如何停止观看该文件,我不希望它被无限期地观看

有什么想法吗

提前谢谢


Jon

我做的是做一个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);
        }
DateTime EndTime=System.DateTime.Now.AddMinutes((双)超时);

while(System.DateTime.Now)您可以在以下其中一项中找到答案:,