我在Awesomium(.NET 4.0)中使用C#插件,并在关闭问题时收到“程序已停止工作”错误消息。我相信这是由于Awesomium进程被杀死了。
我使用了Stack Overflow问题 I get “has stopped working” error when I use 'Application.Exit();' in C# 的建议:
WebCore.Shutdown();
// Erase all temporary files
Process process = Process.Start(@"rmdir /s/q " + "Cache");
process.WaitForExit();
Application.Exit();
我收到AccessViolationException。我该如何解决这个问题?
答案 0 :(得分:0)
我怀疑问题是process.WaitForExit();
行或传递相对文件路径而不是绝对文件路径。
WebCore.Shutdown();
DeleteCache();
Application.Exit();
// ...
private void DeleteCache()
{
ProcessStartInfo info = new ProcessStartInfo();
// get the full path to the Awesomium cache directory
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Cache");
string command = String.Format("RMDIR /S /Q \""{0}\"", path);
// get the path to cmd.exe
info.FileName = System.Environment.GetEnvironmentVariable("COMSPEC") ?? "cmd.exe";
// append the cmd.exe flags to disable auto-run scripts (/D) and to exit at completion (/C)
info.Arguments = String.Concat("/D /C ", command);
info.WindowStyle = ProcessWindowStyle.Hidden;
// start the process without waiting for completion
Process.Start(info);
}
我也不明白为什么Awesomium用Awesomium Answers运行他们自己的SO克隆。 Awesomium可以只监控被标记为awesomium的问题。鉴于Awesomium LLC开发人员的不正当参与,Anwsers论坛更令人沮丧。
答案 1 :(得分:0)
我在Chromium Embedded Framework(CEF)中遇到了同样的问题。我通过致电解决了这个问题:
process.Kill();
在FormClosing()处理程序中。