按老师的“队列使用的简例”
随机出现下面两个问题:
1、 连接未关闭. 连接的当前状态为正在连接
2、如下图:
此主题相关图片如下:数据源01.png
队列处理函数:
If Vars("逻辑1") > 0 AndAlso _MyQueue IsNot Nothing AndAlso _MyQueue.Count > 0 Then
Dim dr As DataRow = _MyQueue.Dequeue '获取队列的第一个值
Dim Change As String = dr("ChangeType")
Dim ftpfile As String
If dr.IsNull("FtpPath") = True '合成文件明细表的文件名
ftpfile = dr("FullPath").Replace(getConfigValue("LocalPath",""),"").Replace("\","/")
Else
ftpfile = dr("FtpPath").Replace("\","/")
End If
Dim s As String
Dim ftpPath1 As String
ftpPath1 = dr("FtpPath")
s = FileSys.GetName(dr("FullPath")) '取出文件名,用于合成ftp上传路径
ftpPath1 = ftpPath1.Replace(s,"") '生成本地的目录(网盘下的目录),用于建立ftp目录
Dim ftpPath As String
ftpPath = getConfigValue("FtpPath","") & ftpPath1 '合成传递ftp上传文件路径
Dim fname As String = dr("FullPath").Replace(GetConfigValue("LocalPath",""),"").Replace("\","/") '合成文件明细表的文件名
Dim dsys As DataRow
dsys = DataTables("System_Set").Find("User_Name = '" & User.Name & "'") '取出ftp"根目录"
If dsys Is Nothing
Return Nothing
End If
dr("success") = 2 '正在同步
dr.Save()
'Dim det As String = dsys("UnitName") & "|" & dsys("DepartmentOne") & "|" & dsys("User_Name") '用户信息:0单位1科室2用户名
Dim d As DataRow
d = DataTables("FilesTB").SQLFind("[UnitName] = '" & dsys("UnitName") & "' and [DepartmentOne] = '" & dsys("DepartmentOne") & "' and [User_Name] = '" & dsys("User_Name") & "' and [FtpPath] = '" & fname & "'")
If d IsNot Nothing
If dr.Isnull("OldName") = False '文件重命名事件的处理
If dr("ChangeType") = "Deleted" OrElse dr("ChangeType") = "Changed" '文件删除事件的处理
DataTables("TempTable").ReplaceFor("OldName","","[FullPath] = '" & dr("FullPath") & "'") '删除事件记录表中重命名的内容
Else
Dim a0,a1,a2,a3 As String
a3 = getConfigValue("LocalPath","") & dr("OldName").Replace("/","\") 'Renamed3 原本地文件名(路径)
a2 = getConfigValue("LocalPath","") & dr("FtpPath").Replace("/","\") 'Renamed2 新本地文件名(路径)
a1 = getConfigValue("FtpPath","") & dr("FtpPath") 'Renamed1 新ftp文件名
a0 = getConfigValue("FtpPath","") & dr("OldName") 'Renamed0 原ftp文件名
If Functions.Execute("Renamed",a0,a1,a2,a3) = True
dr("success") = 3 '重命名成功
Vars("逻辑1") += 1 '通知执行下一个任务
Else
dr("success") = 1 '重命名失败
dr("Failure") += 1
Vars("逻辑1") += 1 '通知执行下一个任务
End If
dr.Save()
End If
ElseIf Change = "Deleted"
ThreadCount = 0
ThreadSum = 0
ThreadSum += 1 '下载的任务数加1
UpdateOff = False
If Functions.Execute("Deleted",ftpPath & s ,dr("FullPath"),ftpfile) = True '参数1 ftp路径及文件名,参数2本地路径及文件名 ,参数3:明细表中的文件名
dr("success") = 3 '文件删除成功
Vars("逻辑1") += 1 '通知执行下一个任务
Else
dr("success") = 1 '文件删除失败
dr("Failure") += 1
Vars("逻辑1") += 1 '通知执行下一个任务
End If
dr.Save()
ElseIf Change = "Created" OrElse dr("ChangeType") = "Changed" OrElse (dr.isnull("OldName") And dr("ChangeType") = "Renamed") '文件新建,更改事件的处理
If FileSys.FileExists(dr("FullPath")) '本地文件不存在则删除事件记录
If FileIsOpened(dr("FullPath")) = False Then
Dim ifo As New FileInfo(dr("FullPath"))
If ifo.Length > 0 '文件的内容为空值,不上传,直接标记为成功,这种情况:新建文件还未添加内容
If CRCCheckFile(dr("FullPath")) > ""
d = DataTables("FilesTB").AddNew() '添加文件
d("FtpPath") = dr("FtpPath")
d("CRCCheck") = CRCCheckFile(dr("FullPath"))
d("UnitName") = dsys("UnitName")
d("DepartmentOne") = dsys("DepartmentOne")
d("User_Name") = dsys("User_Name")
d("date") = Date.Now()
d.Save()
If Functions.Execute("FileCreated",dr("FullPath"),ftpPath,ftpPath & s ) = True '参数1本地路径及文件名, ,参数2ftp路径,,参数3ftp路径及文件名
dr("success") = 3
Vars("逻辑1") += 1 '通知执行下一个任务
Else
dr("success") = 1 '文件建,改失败
dr("Failure") += 1
Vars("逻辑1") += 1 '通知执行下一个任务
End If
Else
dr("success") = 1 '事件记录表标记为1失败
dr("Failure") += 1
Vars("逻辑1") += 1 '通知执行下一个任务
'DataTables("TempTable").ReplaceFor("success",1,"FullPath = '" & dr1("FullPath") & "'") '事件记录表标记为1,失败!
End If
Else
dr("success") = 3
Vars("逻辑1") += 1 '通知执行下一个任务
End If
Else
dr("success") = 1 '事件记录表标记为1失败
dr("Failure") += 1
Vars("逻辑1") += 1 '通知执行下一个任务
End If
End If
ElseIf Change = "Dn"
Dim locName = (GetConfigValue("LocalPath","") & dr("FullPath")).Replace("/","\") '合成 本地文件名及路径
Dim nFTP = dr("FullPath") ' ftp文件名及路径
' UpdateOff = False '关闭文件监视器
ThreadCount = 0
ThreadSum = 0
ThreadSum += 1 '下载的任务数加1
UpdateOff = False
If Functions.Execute("FTPDown",locName,nFTP,dr("Failure"),GetConfigValue("UserInfo","")) = True '参数1本地文件,'参数2 ftp文件名,'参数3 同步次数 参数4'用户信息:0单位1科室2用户名
dr("success") = 3
Vars("逻辑1") += 1 '通知执行下一个任务
Else
dr("success") = 1 '文件下载失败
dr("Failure") += 1
Vars("逻辑1") += 1 '通知执行下一个任务
End If
dr.Save()
ElseIf Change = "Up"
Dim ftn As String = dr("FullPath")
ftn = ftn.Replace(GetConfigValue("LocalPath",""),"") '合成ftp文件名及路径
If Functions.Execute("FileUpload",dr("FullPath"),ftn) = True
dr("success") = 3
Vars("逻辑1") += 1 '通知执行下一个任务
Else
dr("success") = 1 '文件上传失败
dr("Failure") += 1
Vars("逻辑1") += 1 '通知执行下一个任务
End If
dr.Save()
End If
End If
Else
Vars("逻辑1") = -1
End If
[此贴子已经被作者于2015/12/15 15:51:07编辑过]