C#程序已停止工作,Awesomium

时间:2014-03-01 10:22:17

标签: c# winforms .net-4.0 awesomium

我在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。我该如何解决这个问题?

2 个答案:

答案 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()处理程序中。