Vb.net - 目标文件夹上的FileMovement锁定

时间:2012-06-25 14:25:28

标签: vb.net

源代码:vb.net

我们正在使用File.Move()方法将文件从源位置移动到目标位置。 但是目标位置由一个工具监控,每当我们将文件移动到目标位置时,它将获取文件并对其进行处理。这里的问题是当我们尝试移动大容量文件(如大约5GB文件)时,该工具立即拾取文件并尝试在移动操作完成之前处理它并向所有用户发送失败通知。再次成功移动之后完全归档,这次拿起相同并成功处理,这次发送成功通知。

我们无法控制监视目标文件夹的工具,因为它是第三方工具。但是,我们想要找到替代选项,在ReadWrite访问之前对目标寄存器进行锁定,直到移动操作完成,以便第三方无法获取或尝试访问该文件。

请帮助我们。

2 个答案:

答案 0 :(得分:0)

不确定它是否有效,但您也可以对目录进行以下操作:

FileOpen(1, "c:\file.ext", OpenMode.Binary)    
Lock(1)
'Do something with file here
Unlock(1)
FileClose(1)

参考和示例here

我希望它有所帮助。

答案 1 :(得分:0)

首先,我同意@hometoast,有时这样的工具只是查找特定的文件扩展名,因此您可以使用不同的文件扩展名进行复制,然后重命名。

但是除此之外,请将文件下载到临时位置,然后将文件移动到目录中进行监视。 Move不会重新复制文件内容,只是更新文件系统中的指针。应该是原子的。