2010-02-10 103 views
3

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

这样做的一种方法是检查网络共享文件夹,以查看自上次检查后文件大小是否发生了变化,但似乎有点不妥。有没有人有更好的想法如何做到这一点?

由于提前, 斯泰恩

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

谢谢!

+0

好问题。我通过跟踪上次修改日期并查看它是否发生了变化来做到这一点,但我的方法看起来和您的方法一样狡猾。我很想看看发布的内容。 – David 2010-02-10 14:06:47

+2

澄清请:(1)您是否在服务器端复制CD? (2)你打算从客户端浏览器检查复印作业吗? – Dewfy 2010-02-10 14:09:14

回答

2

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

0

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

  • StartCopying的实现可以开始backgorund线程复制,或具有[SoapDocumentMethod(单向=真)]即意味着方法立即返回,而无需等待成就。
  • CheckStatus只是检查你上面描述的内容,并返回到任务的客户端状态。