2016-08-19 8 views
0

これで、2つのURLを同じフォームに2つのcefsharpブラウザウィンドウを同時にロードすることができます。 このサンプルイメージは、より良い enter image description here別のインスタンスで同時に2つのURLをロードするCefSharp

私はこれを行う方法を理解できないようです。現時点では、私は1つのインスタンスしか得られないようです。私がしようとすると2を実行して、私はこのエラーを取得する:これを行うことができない場合

An unhandled exception of type 'System.Exception' occurred in CefSharp.Core.dll 

Additional information: Cef can only be initialized once. Use Cef.IsInitialized to guard against this exception. 

はSomoneのは、別のHTML5は、C#用のブラウザをサポートするお勧めすることができますか?

public ChromiumWebBrowser Browser; 
CefSettings settings = new CefSettings(); 
    void InitBrowser() 
     { 
      settings.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2764.0 Safari/537.36"; 
      Cef.Initialize(settings); 
      Browser = new ChromiumWebBrowser("about:blank"); 
      Browser.FrameLoadEnd += OnFrameLoadEnd; 
      Browser.LoadingStateChanged += OnLoadingStateChanged; 
      Browser.FrameLoadStart += OnFrameLoadStart; 
      Browser.LoadError += OnLoadError; 
      Controls.Add(Browser); 
      Browser.Dock = DockStyle.Fill; 
     } 
+0

https://github.com/cefsharp/CefSharp.MinimalExample/blob/master/CefSharp.MinimalExample.WinForms/Program.cs#L16簡単なオプションは、 'Program.cs'で初期化することです。 – amaitland

答えて

0

あなただけのアプリケーションごとに、たらCEFを初期化することができます。

github CefSharp repository hereにもトピックがあります。

You can only initialize CEF once, per application. Nothing has changed in regards to this. It's just how CEF functions.

Although the architecture of CEF and CefSharp (which is merely a .NET binding on top of it) is different: https://bitbucket.org/chromiumembedded/cef/wiki/Architecture#markdown-header-process-considerations . There is a one common Browser process which then spawn a Renderer process for each "window" or "tab". (You can see them in your Windows Task Manager)

基本的には、別の形式でもできません。

あなたは既に次のコードを使用して、実行中のすべてのインスタンスがありますかどうかを確認(多分あなたは最初に停止することができ、そして、あなたの場合には無用のようですが、その後、別のを開始する)ことができます。

if (Cef.IsInitialized) 
{ 
    Console.WriteLine("Sorry, cannot start other instance because there's already an open browser"); 
} 
-1

あなたがかもしれませんそれを使用して実行するSystem.Threading

「これは私が理解することから、アプリケーションごとに1回だけCEFを初期化できます。

Run.Application(new Form())は、System.Threadingを使用して複数回使用できます。

関連する問題