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