进程无法访问它正被另一个进程使用

时间:2015-04-01 11:50:39

标签: vb.net

我有三个独立的Windows服务解决方案。一个服务下载文件,第二个是获取文件,第三个是加载到db。有时在下载文件期间,第二个进程在其静态下载期间开始使用它,或者第三个进程想要加载它但文件仍在解析。我听说Mut​​ex可以在我的情况下解决,但我不知道在这种情况下如何使用它,其他进程等待文件,直到他们“免费”。下面我将向您展示我的代码:

下载文件下载的代码的过程部分: (在这种情况下,每个文件都下载到特定的位置文件夹)

 For Each item In RemoteFiles
                            Try
                                session.GetFiles(item, DownloadFolder, True, transferOptions).Check()
                            Catch ex As Exception 
                            End Try
                        Next

解析win服务进程解析下载文件的部分代码:

 Dim ColumnFound As Boolean = False
            Using MyReader As New FileIO.TextFieldParser(fileToBeParsedPath)
                Dim CurrentRecord As String() ' this array will hold each line of data
                With MyReader
                    .TextFieldType = FileIO.FieldType.Delimited
                    .Delimiters = New String() {","}

                    .HasFieldsEnclosedInQuotes = True
                End With

在该过程之后,每个文件都迁移到ParsedFolder。但是来自它的数据保存在扩展名为.dat的文件中。这些文件由我的Loader引擎使用。

我如何为下载过程中的文件做一些“锁定文件”,以防止解析器在解析过程中接受它们并等待?我可以创建一个集中的位置来保存文件状态,所以解析器在将现有文件放入列表后然后何时打开并解析它们将检查并等待直到它的空闲?请关于你的建议/代码。

已编辑:

•Ftp两个文件但只能观看一个。例如,发送文件important.txt和important.finish。只关注完成文件但处理txt。

•FTP一个文件,但完成后重命名。例如,发送important.wait并让发件人在完成时将其重命名为important.txt。

0 个答案:

没有答案