在工作中,我们的应用程序正在启动cefsharp.browsersubprocess。
我正在将我们的应用程序与自动更新框架squirrel.windows集成在一起。
在更新之后,我们的应用程序运行一个squirrel方法,该方法启动另一个squirrel进程(update.exe),然后在我们的应用程序上执行environment.exit。(然后,update.exe将等待我们的应用程序退出,然后启动我们的应用程序的更新版本)。
发生的情况是libcef在点(4000001f)向事件管理器抛出了一个错误,我猜是因为我们杀死了它的父亲(我们的应用程序),但没有杀死cefsharp.browsersubprocess。
如果我的理论是正确的(我希望得到确认),我计划修改squirrel的方法,获得我们应用程序的子进程列表,然后在我们的应用程序上执行environment.exit之前杀死它们(只有cefsharp.browsersubprocess)。
我该如何正确地杀死它呢?被process.Kill?被process.CloseMainWindow?
谢谢!
发布于 2021-11-03 07:45:55
它对我来说很有用。
internal static void AppRestart()
{
ProcessStartInfo Info = new ProcessStartInfo();
Info.Arguments = "/C choice /C Y /N /D Y /T 1 & START \"\" \"" +
System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) +
"\\..\\" + System.IO.Path.GetFileName(Assembly.GetExecutingAssembly().Location) + "\"";
Info.WindowStyle = ProcessWindowStyle.Hidden;
Info.CreateNoWindow = true;
Info.FileName = "cmd.exe";
Process.Start(Info);
Process.GetCurrentProcess().Kill();
}
https://stackoverflow.com/questions/69282669
复制相似问题