检查文件是否已完成复制

时间:2010-02-10 14:04:24

标签: asp.net asp.net-mvc copy

我正在编写一个ASP.NET webapp,它将CD的内容复制到网络共享。我需要定期检查复印作业是否完成。

执行此操作的一种方法是检查网络共享文件夹,以查看自上次检查后文件大小是否已更改,但这似乎有些狡猾。有没有人有更好的想法如何做到这一点?

提前致谢, 斯泰恩

EDIT
更多解释:
基本上我每隔5秒调用一次JsonResult动作方法,称为getStatus(source,destination)。此方法需要检查以下内容:
- 如果源目录仍为空,则无法启动复制 - >返回状态“等待”
- 如果源目录包含文件,则复制可以开始-_>呼叫复制方法+返回状态“复制”
- 如果目标目录包含文件,并且文件大小保持不变,则复制完成 - >返回状态“已完成”

谢谢!

2 个答案:

答案 0 :(得分:2)

在您的webapp中,使用阻止文件复制操作,例如File.Copy,但运行在后台线程中执行复制的过程。在后台线程中,将状态信息(例如“完成9个文件中的3个”或“我已完成!”或“发生错误:...”)写入某个共享对象(静态变量,Session对象,数据库,...)。然后编写一些显示该共享对象内容的Status.aspx页面。

答案 1 :(得分:0)

使用2种方法从客户端的javascript端创建Web服务:StartCopying,CheckStatus。

  • StartCopying的实现可以启动backgorund线程进行复制,也可以[SoapDocumentMethod(OneWay = true)]表示方法立即返回而无需等待完成。
  • CheckStatus只检查您上面描述的内容,并返回任务的客户端状态。