我有一个以后台启动的WinForm应用程序(在Program.cs中循环)。收到消息后,它会显示带有CEF浏览器的表单
static void Main(string[] args) {
while(true){
if(messageReceived()){
if(Program.message == 200) {
Application.Run(new Form());
}
else {
Environment.Exit(0);
}
}
}
}
窗口:
private CefSharp.WinForms.ChromiumWebBrowser browserChrome;
private void Form_Load(object sender, EventArgs e) {
this.browserChrome = new CefSharp.WinForms.ChromiumWebBrowser(String.Empty);
this.browserChrome.Load("htp://www.google.pl");
}
这是第一次使用,但在我关闭我的表单后,应用程序再次开始检查邮件,当我想再次打开我的表单时,整个Exe崩溃: “ChromeApp停止工作”
中发生错误libcef.dll,版本:3.2785.1482.0,时间戳:0x57eb4d4e
是否可以使用Chromium运行此表单两次?
非常感谢您的帮助
答案 0 :(得分:1)
您确定需要使用Application.Run(new Form());
吗?也许new form().Show()
会对你有用吗?这将启动一个新表单,但不是一个全新的应用程序。
答案 1 :(得分:0)
我已经尝试过 - 说实话,这是我的第一个想法之一,但没有。我想出了一些"脏"溶液
只是解释一下,Cef.Initialize()在我的原始代码中,我只是忘了把它放在我的例子中。我稍微修改了我的代码,它现在正在运行。
eval
和窗口:
static void Main(string[] args) {
Cef.Initialize(new Cef.Settings());
var chromeBrowser = new CefSharp.WinForms.ChromiumWebBrowser(String.Empty);
while(true){
if(messageReceived()){
if(Program.message == 200) {
var form = new Form();
form.ChromeBrowser = chromeBrowser;
Application.Run(form);
}
else {
Cef.Shutdown();
Environment.Exit(0);
}
}
}
}
它使Chromium及其需要的所有东西保持活力并且全时工作。
我想我会写一堂课,让我的Chromium留在那里,所以当我需要更深层次的东西时,我不必通过表格传递它 - 一些简单的单身,但是星期一。 / p>