Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 运行外部程序并退出调用程序_Vb.net_External - Fatal编程技术网

Vb.net 运行外部程序并退出调用程序

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

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 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函数?谢谢