【问题标题】:Check if file is finished copying检查文件是否完成复制
【发布时间】:2010-02-10 14:04:24
【问题描述】:

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

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

提前致谢, 斯蒂金

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

谢谢!

【问题讨论】:

  • 好问题。我通过跟踪上次修改日期并查看它是否已更改来做到这一点,但我的方法似乎和你的一样狡猾。我有兴趣看看发布的内容。
  • 请澄清:(1)您是否在服务器端复制CD? (2) 您要从客户端 Web 浏览器检查复制作业吗?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多