-1

源代码:vb.net

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

我们无法控制监视目标文件夹的工具,因为它是第三方工具。但是,我们想找出替代选项,在目标文件夹上加锁,例如读写访问,直到移动操作完成,这样第 3 方将无法获取或尝试访问该文件。

请帮助我们。

4

2 回答 2

0

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

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

参考和例子在这里

我希望它有所帮助。

于 2012-06-25T14:33:03.600 回答
0

首先,我同意@hometoast,有时像这样的工具只是寻找特定的文件扩展名,这样你就可以使用不同的文件扩展名复制然后重命名。

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

于 2012-06-25T14:53:49.783 回答