vb.net - 该进程无法访问文件“路径”,因为在使用 FileSystemWatcher 时它正被另一个进程使用
问题描述
我无法在需要跟踪的文件夹中创建 excel 或 word 文件。如果在主目录跟踪处使用常规的新文件连续创建,它将报告这样的错误。我使用 filesystemwatcher 来跟踪文件
这是我的代码
Public Sub Createee(sender As Object, e As FileSystemEventArgs)
Try
Dim x = e.Name
List1.Add(x)
Dim path As String = e.FullPath
Dim i = InStr(path, ".")
Dim y = InStr(path, "~$")
If File.Exists(path) Then
List.Add(path)
End If
If path.EndsWith(".txt") Or path.EndsWith(".docx") Or path.EndsWith(".xlsx") Or path.EndsWith(".csv") Then
If System.IO.Directory.Exists(path) Then
LbxWatching.Items.Add(Now.ToLocalTime & " - " & path & " - " & e.ChangeType.ToString)
List.Add(path)
'My.Computer.FileSystem.CopyDirectory(TbxFrom.Text, TbxTo.Text, True)
System.IO.File.Copy(path, TbxTo.Text.ToString & "\" & e.Name, True)
End If
End If
If path.EndsWith(".txt") Or path.EndsWith(".docx") Or path.EndsWith(".xlsx") Or path.EndsWith(".csv") Then
If i > 0 And y = 0 Then
If Not path.Substring(path.Length - 4) = ".tmp" And Not path.Substring(path.Length - 4) = ".TMP" Then
LbxWatching.Items.Add(Now.ToLocalTime & " - " & path & " - " & e.ChangeType.ToString)
List.Add(path)
'My.Computer.FileSystem.CopyDirectory(TbxFrom.Text, TbxTo.Text, True)
My.Computer.FileSystem.CopyFile(path, TbxTo.Text.ToString & "\" & e.Name, True)
End If
End If
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
List.Clear()
List1.Clear()
End Sub
Private Sub FileWatcher_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim appsettings = ConfigurationManager.AppSettings
Dim result As String
For Each result In appsettings
If result = "Key0" Then
TbxFrom.Text = appsettings("Key0")
ElseIf result = "Key1" Then
TbxTo.Text = appsettings("Key1")
End If
Next
MapDrive("X", TbxTo.Text)
Watcher = New FileSystemWatcher()
Watcher.Path = TbxFrom.Text
Watcher.Filter = "*.*"
Watcher.IncludeSubdirectories = True
Watcher.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName
AddHandler Watcher.Changed, AddressOf Modify
AddHandler Watcher.Created, AddressOf Createee
AddHandler Watcher.Deleted, AddressOf Delete
AddHandler Watcher.Renamed, AddressOf ChangeName
Watcher.EnableRaisingEvents = True
CheckForIllegalCrossThreadCalls = False
LbxWatching.Items.Clear()
List = New ArrayList()
List1 = New ArrayList()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
这只发生在我在监视文件夹中创建文件时,其他诸如编辑、删除文件或从其他地方复制一堆文件之类的东西都没有损坏。
解决方案
推荐阅读
- flutter - 加入音频/视频通话后如何检测远程用户有连接问题?
- python - 根据另一个字典键值对更新列表中的字典键
- java - 升级 AWS Elastic Beanstalk 的平台版本后的 handshake_failure
- java - 如何在 Java 中将“2019-08-07T14:00:00-0400”转换为 SQL DATETIME 格式?
- excel - 如果 OptionButton 处于活动状态,则 TextBox 是必需的
- reactjs - 将数据从 div 显示到另一个 div
- jenkins - 如何使用 ANT 在 Jenkins 中验证参数是否为大写
- reactjs - react-instantsearch-dom:: 道具类型失败:提供给“Hits”的“object”类型的无效道具“hitComponent”,预期的“函数”
- intellij-idea - IntelliJ 2019.2 服务工具窗口丢失
- selenium - 处理打开新选项卡并将您重定向到该选项卡的按钮