【发布时间】:2010-12-01 20:07:01
【问题描述】:
我正在编写一些代码来通过从 ftp 站点获取新 dll 来更新应用程序,根据清单文件,也在 ftp 站点上,它指定了每个 dll 的版本。基本思想是,更新程序在启动时运行,它检查 ftp 站点上的清单,下载比应用程序当前使用的 dll 更新的任何 dll,然后启动应用程序并自行关闭。
这会导致以下问题,我不确定最好的处理方法:假设我想在 ftp 站点上放置一个新的 dll,但同时更新程序应用程序实例尝试读取该 dll .如果我删除 dll,然后复制新的,更新程序可能看不到该文件,即使清单表明它应该在那里。
我有一种标记文件的想法,它将充当同步对象,我和更新程序实例可以将其存在用作锁,但这不仅仅是移动问题吗?在检查锁是否存在和制作锁(其他人可以制作锁)和开始修改 ftp 文件之间仍有时间。另外,如果某些更新程序在删除标记之前崩溃,则无法判断是否应该删除剩余的标记。
编辑:我还看到了将文件上传到另一个文件夹,然后重命名文件夹的建议,因为重命名应该是 ftp 中的原子操作,但是否可以只将文件夹重命名为现有文件夹?不应该先删除已有的文件夹,造成同样的问题吗?
有解决这个问题的标准方法吗?
【问题讨论】:
标签: ftp synchronization locking