下面的代码会导致NullReferenceException
tStartParameter = String.Format(tStartParameter, tTo, tSubject)
tProcess = Process.Start(New ProcessStartInfo(tStartParameter) _
With {.UseShellExecute = True})
tProcess.WaitForExit()tStartParameter是:
https://mail.google.com/?view=cm&fs=1&tf=1&to=t@example.com&su=boogaloo!!使用调试器,我看到Process.Start正在返回null。所以..。对为什么会发生这种事有什么想法吗?我真的很想阻止程序的执行,直到用户完成启动的过程。
更新:将代码重构为:
tStartParameter = String.Format(tStartParameter, tTo, tSubject)
tProcess = New Process
tProcess.StartInfo = New ProcessStartInfo(tStartParameter) _
With {.UseShellExecute = True}
tProcess.Start()
tProcess.WaitForExit()导致此异常:
InvalidOperationException:没有进程与此对象关联.
发布于 2009-05-18 22:48:21
从MSDN中,Process.Start将返回:
--一个新的流程组件,它与进程资源、或null引用相关联( Visual中为Nothing),如果没有启动进程资源,则为(例如,如果重用了现有进程)。
在您的例子中,由于您将一个URL传递给Process.Start而不是一个可执行文件,所以您实际上并没有开始一个新的进程。您正在将URL传递给探索者,或任何浏览器。所以你会得到一个空值。
在任何情况下,“阻止程序执行直到用户完成启动的进程”意味着什么?等待直到用户关闭网页浏览器?在这种情况下,您可能需要这样的东西:
Process p = Process.Start("iexplore", "http://www.google.com");
p.WaitForExit();..。对我来说是合适的。不过,它确实要求您指定浏览器可执行文件。
https://stackoverflow.com/questions/880129
复制相似问题