Tag: blocking

Process.Start在某些客户端上随机阻塞/挂起

(有一个非常相似的话题从未得到解决: 这里 ) 我们在几个客户端上运行了一个大应用程序,但最近我的一些代码停止了工作。 添加一些调试代码我发现代码在调用Process.Start()时停止(没有设置shellexecute = true)。 电话很简单 Process.Start(new ProcessStartInfo(“program”)) 在BackgroundWorker线程中。 “程序”应用程序执行它应该执行的操作并退出。 我们的应用程序继续,因为线程在后台,但如果应用程序在GUI线程上运行另一个Process.Start,则应用程序会锁定。 如果使用X按钮关闭应用程序,则应用程序仍显示在taskmanager中,因为该线程仍被Process.Start阻止。 问题是这种行为无法再现。 它在一些客户端计算机上随机发生。 使Process.Start()挂起会发生什么? (Program.Main标有[STAThread]) 我目前刚刚制作了一个解决方法,在自己的线程中启动Process.Start(),如果它还没有返回,则在5秒后终止它。 但对于等待代码返回的用户来说,这是5秒钟(我不知道我可以设置超时有多低,因为在某些情况下我需要在Process.Start()上返回值)。 可以有防病毒软件干扰吗? (客户端安装了Symantec AV) 更新:我假设当我做了一个 ProcessStartInfo psi = new ProcessStartInfo(“ping”, “localhost”); 默认情况下psi.UseShellExecute为FALSE …这是不正确的。 它默认为TRUE。 这是正常的吗?