【问题标题】:WebView2: Multiple instances of same application need to launch the same browser controlWebView2:同一个应用程序的多个实例需要启动同一个浏览器控件
【发布时间】:2022-11-11 02:31:58
【问题描述】:

问题

我最近用依赖Microsoft.Web.WebView2.WinForms.WebView2 的控件替换了基于System.Windows.Forms.WebBrowser 的控件。这一直运作良好,除了我的用户希望一次运行他们的应用程序的 2 个实例,两种情况偶尔会同时打开该 WebView2 表单。当他们尝试此操作时,两个实例之一无法加载 WebView2 控件,直到另一个实例关闭。

到目前为止学习/尝试过:

我发现 WebView2 非常挑剔,所以我研究了像 CefSharp 这样的替代方案,但在我知道它们可以解决问题之前,我不想花时间来实现它们。据我所知,CefSharp 和 WebView2 在启动基于 Chromium 的浏览器、渲染到 WinForms 控件方面做的事情非常相似。

这个blog post(阅读:广告)付费替代DotNetBrowser表示

您可以使用不同的配置同时初始化和使用多个 Chromium 引擎 [在 DotNetBrowser 中],这在 CefSharp 中是不可能的。

我想知道同样的限制是否适用于 WebView2,并且是我的用户无法一次加载相同表单的 2 个实例的原因。

语境

我支持一个古老的桌面 CRM,它将被淘汰,取而代之的是现代替代方案,但与此同时,旧标准需要与我们引入的新流程集成。其中一个新流程是网页从我们的呼叫中心用户输入数据的外部服务,然后期望 CRM 将输入的数据从网页中提取出来。

我不知道他们的部分过程是上面的 2 实例位:他们习惯于能够从一个嵌入式浏览器窗口复制并粘贴到另一个。

【问题讨论】:

  • 每个WebView2instance 都需要它自己的环境,仅此而已。启动时只需使用不同的设置。

标签: c# microsoft-edge cefsharp webview2 embedded-browser


【解决方案1】:

@Poul Bak 在对该问题的评论中说得对:提供每个应用程序实例不同的设置解决了问题。

我为每个实例更改的设置是用户数据文件夹的路径:我能够为CoreWebView2Environment.CreateAsync 方法的userDataFolder 参数传递不同的值,基于在我的实例之间保存不同值的变量进行分支用户正在运行。

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 2018-04-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多