Vb.net 运行外部程序并退出调用程序
n程序的关闭过程(就在运行Application.exit之前)我需要运行一个外部程序来传递参数并退出调用程序。 名为(FilmDB_Update.exe)的程序的任务是覆盖主程序或dll库。 我试图使用“process.start”技术,但显然,调用程序仍在使用,不允许我覆盖它。 这是我写的代码:Vb.net 运行外部程序并退出调用程序,vb.net,external,Vb.net,External,n程序的关闭过程(就在运行Application.exit之前)我需要运行一个外部程序来传递参数并退出调用程序。 名为(FilmDB_Update.exe)的程序的任务是覆盖主程序或dll库。 我试图使用“process.start”技术,但显然,调用程序仍在使用,不允许我覆盖它。 这是我写的代码: Private Sub AggiornaPgm() Dim ws_file As String = "FilmDB_Update.exe" Dim ws_proc_param As
Private Sub AggiornaPgm()
Dim ws_file As String = "FilmDB_Update.exe"
Dim ws_proc_param As String = """" + ws_working_path + """ " + ws_temp_path
Dim ws_fullPath As String = Path.Combine(ws_temp_path, ws_file)
If File.Exists(ws_fullPath) Then
File.Copy(ws_fullPath, ws_file, True)
End If
Dim proc As New System.Diagnostics.Process()
proc = Process.Start(ws_file, ws_proc_param)
End Sub
我想尝试使用shell命令,但无法将参数传递给被调用的程序。
你们有其他想法吗?
多谢各位
马塞洛
正如Ahmed所建议的,我将调用进程的测试添加到调用的程序中
p = Process.GetProcessesByName(ws_calling_pgm)
While p.Count > 0
Threading.Thread.Sleep(3000)
p = Process.GetProcessesByName(ws_calling_pgm)
End While
p = Nothing
当我退出While循环时,调用过程终止。我不明白为什么尽管进程已不存在,但主程序仍在使用。在调用将更新它的外部程序之前,请确保关闭主程序中的文件。在帖子中,我错误地没有指定要更新的文件之一是调用程序本身。实际上,我正在构建一个系统,在不同的PC上分发程序更新,而不需要在每台PC上进行手动干预。您是第二个程序的开发人员吗?如果是这样,您可以让它检查(并等待)第一个程序的进程是否退出。如果没有,则无法保证第一个程序在第二个程序尝试访问其文件时退出。在这种情况下,您可能会考虑创建一个临时批处理文件,等待几秒钟,启动进程,然后删除自身。是的,我是这两个程序的开发者。我试着按照你的建议改变第二个计划。为了避免CPU 100%等待第一个程序关闭,只需使用等待循环中的thread.sleep函数?谢谢