CefSharpがXAML/WPFアプリケーションで動作するかどうかを評価しようとしています。終了時の処理されない例外
現在のところ、私たちはMSのWebブラウザを使っていますが、これには厳しい制限があります。
私たちが持っているものは、いくつかのカスタムコントロールの1つを表示するウィンドウです。その1つにはマップを含むWebページを読み込むブラウザコントロールが含まれています。
テスト用に、http://www.google.comにハードコードされたWebブラウザーを含むカスタムコントロールを作成しました。
次に、http://www.google.comにハードコードされたChromiumWebBrowserを含む2番目のカスタムコントロールを作成しました。
コード内のいずれのブラウザコントロールでも何もしません。ユーザーコントロールを表示または折りたたんで単純に変更しています。
しかし、私はChromiumWebBrowserが、私はそれが見えか作るか、XAMLに含まれている場合は、終了時に私は例外を取得:
System.InvalidOperationException was unhandled
Message: An unhandled exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll
Additional information: The calling thread cannot access this object because a different thread owns it.
私のカスタムコントロールがこれを含んでいる場合だけで、それを明確にするために、それはこのが含まれている場合、私はやる、
<KtWpf:KorUserControl
x:Class="KtWpf.CEFSharpUtilityMap"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:KtWpf="clr-namespace:KtWpf" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"
>
<DockPanel>
<TextBox DockPanel.Dock="Top">CEFSharp</TextBox>
<WebBrowser
x:Name="mapBrowser"
Source="http://www.google.com"
/>
</DockPanel>
</KtWpf:KorUserControl>
:私は例外を取得しない
<KtWpf:KorUserControl
x:Class="KtWpf.CEFSharpUtilityMap"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
xmlns:KtWpf="clr-namespace:KtWpf" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"
>
<DockPanel>
<TextBox DockPanel.Dock="Top">CEFSharp</TextBox>
<cefSharp:ChromiumWebBrowser
x:Name="mapBrowser"
Address="http://www.google.com"
/>
</DockPanel>
</KtWpf:KorUserControl>
Aいいえ、アイデア?
NuGetのCefSharp.Wfpバージョン49.0.0を使用しています。 (そしてCefSharp.Commonとcef.redist.x64、私はx86用と同じことの建物を取得しますけれども。)コールスタックを追加する
=== ===は私たちが行う必要がある何
> WindowsBase.dll!System.Windows.Threading.Dispatcher.VerifyAccess() Unknown
PresentationCore.dll!MS.Internal.Media.VisualTreeUtils.AsVisual(System.Windows.DependencyObject element, out System.Windows.Media.Visual visual, out System.Windows.Media.Media3D.Visual3D visual3D) Unknown
PresentationCore.dll!MS.Internal.Media.VisualTreeUtils.AsNonNullVisual(System.Windows.DependencyObject element, out System.Windows.Media.Visual visual, out System.Windows.Media.Media3D.Visual3D visual3D) Unknown
PresentationCore.dll!System.Windows.Media.VisualTreeHelper.GetParent(System.Windows.DependencyObject reference) Unknown
PresentationCore.dll!System.Windows.Media.Visual.ClearTreeBits(System.Windows.DependencyObject e, System.Windows.Media.VisualFlags treeFlag, System.Windows.Media.VisualFlags nodeFlag) Unknown
PresentationCore.dll!System.Windows.Media.Visual.VisualAncestorChanged.remove(System.Windows.Media.Visual.AncestorChangedEventHandler value) Unknown
PresentationCore.dll!System.Windows.PresentationSource.RemoveSourceChangedHandler(System.Windows.IInputElement e, System.Windows.SourceChangedEventHandler handler) Unknown
CefSharp.Wpf.dll!CefSharp.Wpf.ChromiumWebBrowser.Dispose(bool isdisposing) Unknown
CefSharp.Wpf.dll!CefSharp.Wpf.ChromiumWebBrowser.Dispose() Unknown
CefSharp.Core.dll!CefSharp.Cef.Shutdown() Unknown
CefSharp.Core.dll!CefSharp.Cef.ParentProcessExitHandler(object sender, System.EventArgs e) Unknown
あなたは完全なスタックトレースを持っていますか? – stuartd
ここにもう一度尋ねた理由はありますか? – amaitland
私はもともとこの質問をCEFSharp Google Groupに掲載しましたが、何の反応もありませんでした。他の質問を読んで、私はガタガタして、繰り返しました。私は読書が不可能であることがわかった。チャット形式だと、誰かが私に答えてくれたかどうかは分からない。そこで私はここで質問を再投稿しました。返答は返されても後世には失われませんでした。 –