我已经继承了一些VB.net代码。我的任务是找出它不工作的原因。我有2个应用程序。第一个无法在VB.net中获取进程死亡
作为服务运行,无限地检查表以查看是否有任何要处理的任务。如果它找到一个,它应该启动第二个应用程序来处理任务,然后返回到循环并检查另一个。这两个应用程序都是窗体,但不显示任何窗口。我遇到的问题是第二个应用程序完成后,第一个应用程序从未收到信号,因此它永远在等待,因此无法进入下一个任务。如果我进入TaskManager并杀死第二个应用程序,那么第一个应用程序将获取该通知并继续进行。以下是我如何创建流程并等待它。我尝试了几种创建和等待过程的不同方式(使用Shell/OpenProcess,WaitForSingleObject等),但我无法实现它。我搜索了互联网,StackOverflow和MSDN网站,但没有尝试过。我一直在搞这个2天!
形式1个负载:
Dim ProcessProperties As New ProcessStartInfo
ProcessProperties.FileName = strExeFullPath
ProcessProperties.Arguments = " /project " & l_project
ProcessProperties.CreateNoWindow = True
Dim myProcess As Process = Process.Start(ProcessProperties)
myProcess.WaitForExit()
当窗体2完成时,它确实Me.Close()和退出小组在负载子程序但过程是在任务管理仍呈现和永远不会返回到Form1所以Form1永远在WaitForExit中。我尝试关闭每个打开的文件和连接,并将它们设置为Form2,Me.Dispose等中的Nothing。我已经尝试过Application.Exit作为Form2的最后一行。那个愚蠢的东西不会死!为什么不能死呢??? !!
我错过了什么?
你的意思是'App1'是一个Windows服务,App2是由用户运行,还是'App1'服务本身启动'App2'? – 2010-10-21 15:26:44
App1启动App2。最终,App1将由FireDaemon启动,但现在我正在从命令行运行它。运行FireDaemon时它的行为方式相同。对困惑感到抱歉。我仍在学习术语。 – mfowler 2010-10-21 15:45:01