我已经创建了一个包含流程的应用。如果用户在进程繁忙时尝试关闭表单,则会提示他们并询问他们是否要等待或结束。如果他们选择等待,那么在BGW中设置并检查取消标志,这将在当前任务之后结束。
问题是如何处理他们是否还想结束。我的过程是压缩文件。如果进程是大拉链并且用户不想等待,那么我需要杀死BGW然后清理,即删除不完整的zip文件。我写过:
Else
' If cancel selected...
' Forces backup to end.
???
' Deletes incomplete backup.
If My.Computer.FileSystem.FileExists(currentBackup1) Then
My.Computer.FileSystem.DeleteFile(currentBackup1)
End If
End If
我尝试在我的表单close sub中删除该文件,但BGW仍然可以访问,我有一个例外,即文件正在使用中。因此,我需要杀死BGW或者能够在表单关闭之前删除正在使用的文件。有人可以帮忙吗?感谢。
答案 0 :(得分:0)
如果进程完成,您可以声明一个返回true的变量。所以你可以试试这个
Public Class MainForm
Public IsComplete As Boolean = False
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
' Your code comes here
IsComplete = True
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
If IsComplete Then
MsgBox("Completed successfully")
Else
If My.Computer.FileSystem.FileExists(currentBackup1) Then
My.Computer.FileSystem.DeleteFile(currentBackup1)
End If
End If
End Sub
End Class