Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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# 检查/了解文件是否已完全下载(使用c)_C#_Downloadfile - Fatal编程技术网

C# 检查/了解文件是否已完全下载(使用c)

C# 检查/了解文件是否已完全下载(使用c),c#,downloadfile,C#,Downloadfile,我想开发一个C应用程序客户端,每X秒监控一个文件夹,在这个文件夹中,另一个web应用程序下载文件,通常是Office文件、PDF等等。。。。文件完全下载后,客户端应用程序必须打开文档并执行其他任务/操作 在不知道文件实际大小的情况下,是否有任何方法可以检查/理解文件何时已完全下载 最好的 Stefano您可以使用静态计时器,并从Global.asax中的应用程序启动方法启动它。 在Global.asax中,添加以下字段: static Timer _timer = null; 然后,您可以让您

我想开发一个C应用程序客户端,每X秒监控一个文件夹,在这个文件夹中,另一个web应用程序下载文件,通常是Office文件、PDF等等。。。。文件完全下载后,客户端应用程序必须打开文档并执行其他任务/操作

在不知道文件实际大小的情况下,是否有任何方法可以检查/理解文件何时已完全下载

最好的


Stefano

您可以使用静态计时器,并从Global.asax中的应用程序启动方法启动它。 在Global.asax中,添加以下字段:

static Timer _timer = null;
然后,您可以让您的应用程序像这样启动:


另一个web应用程序是否在您的控制之下?如果是,是否可以更改为将文件下载到另一个文件夹或使用另一个文件名,并仅在完成下载后移动或重命名?是的,web应用程序由我控制Blazor web应用程序,但实际上,在这种情况下,我不知道如何在客户端下载指定特定文件夹的文件,例如:C:\temp\projectname。我认为,您需要检查是否存在写入文件的进程。。。如果未找到,则下载已完成。您是否尝试打开未完全下载的文件?你有什么错误信息?换句话说,我会尝试使用try{}catch{}语句打开文件。如果文件被另一个进程下载锁定,则我会等待一段时间,然后重试。谢谢,我将尝试此解决方案尝试使用try catch语句重复打开文件它与OP的问题有何关系?如果OP的应用程序是用.NETCore编写的,而没有global.asax这样的东西,该怎么办?
void Application_Start(object sender, EventArgs e)
{
    if (_timer == null)
    {
        _timer = new Timer();
        _timer.Interval = 1000; // some interval
        _timer.Elapsed += new ElapsedEventHandler;
        _timer.Start();
    }
}

void ElapsedEventHandler(object sender, ElapsedEventArgs e)
{
     string filePath = "/files/myfile.txt";
     if (Directory.Exists(filePath))
     {
         other_tasks_operations();
     }
}