如果资源管理器已在运行

时间:2018-03-12 12:25:27

标签: vb.net

我有一个系统可以将数据备份到具有某些参数的网络,例如:

'如果x进程正在运行,请不要运行备份'

因为它连接到网络,所以用户将不断加入。我遇到的问题是,如果数据正在使用中,我不希望数据被移动到网络上,此外,如果有人在程序所在的同一台计算机上使用文件浏览器,则数据无法移动。< / p>

我会使用'如果资源管理器正在运行,请不要运行备份',但资源管理器已链接到Windows并且始终在运行

If program.Count > 0 Or program2.Count > 0 Then
   Try
      Msgbox("Process Running")
   Catch ex As Exception
   End Try
Else
   'backup data
End If

有没有办法尝试让程序传输文件,但如果由于文件目录已经打开而失败,那么执行x?

1 个答案:

答案 0 :(得分:-1)

试试这个。如果您无法锁定文件,它应该会生成错误。

Public Function IsFileLocked(file As FileInfo) As Boolean
    Dim stream = DirectCast(Nothing, FileStream)
    Try
        stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)
    Catch generatedExceptionName As IOException
                'handle the exception your way
        Return True
    Finally
        If stream IsNot Nothing Then
            stream.Close()
        End If
    End Try
    Return False
End Function