WPF C# Cefsharp Ver。 71, 每次加载用户控件都会创建新的 CefSharp.BrowserSubprocess.exe

WPF C# Cefsharp Ver. 71, each load of user control creates new CefSharp.BrowserSubprocess.exe

请检查下面的代码片段,每次我导航到我的视图(用户控件)时都会加载它,它会在每次加载时创建新的 CefSharp.BrowserProcess.exe 并呈现上次访问的 URL。 问题是它不维护站点的会话存储(URL)并且负载不正确,数据丢失。

viewModel(主要)代码:

private void OnLoad()
    {
        IsBusy = true;
        try
        {
            if (string.IsNullOrEmpty(TieAddress))
            {
                TieAddress = _serviceJournalsBaseSettings.GetTieUrl();
            }

            var cookieManager = Cef.GetGlobalCookieManager();
            Cookie cookie = new Cookie
            {
                Name = BaseSettings.GetTieCookieName(),
                Value = BaseSettings.GetTieCookie()
            };
            cookieManager.SetCookie(BaseSettings.GetTieCookieUrl(), cookie);

        }
        catch (Exception ex)
        {
            ShowErrorNotification(ex.Message);
        }
        finally
        {
            IsBusy = false;
        }
    }

查看(用户控件)代码:

 <wpf:ChromiumWebBrowser 
 Grid.Row="1" Grid.ColumnSpan="2" 
 x:Name="BrowserTieView"

                            Address="{Binding TieAddress, Mode=TwoWay}"
                            Title="Browser Tie View"
                            AllowDrop="True"/>

View.Xaml.cs

public partial class ServiceJournalsView : UserControl
{
    public ServiceJournalsView()
    {
        InitializeComponent();
        BrowserTieView.DownloadHandler = new DownloadHandler();
        BrowserTieView.BrowserSettings = new BrowserSettings()
        {
            ApplicationCache = CefState.Enabled,
            FileAccessFromFileUrls = CefState.Enabled,
            Javascript = CefState.Enabled,
            LocalStorage = CefState.Enabled,
            WebSecurity = CefState.Disabled,
            JavascriptCloseWindows = CefState.Enabled,
            JavascriptDomPaste = CefState.Enabled,
        };

        BrowserTieView.LoadError += (sender, args) =>
        {
            // Don't display an error for downloaded files.
            if (args.ErrorCode == CefErrorCode.Aborted)
            {
                return;
            }


            // Display a load error message.
            var errorBody = string.Format(
                "<html><body bgcolor=\"white\"><h2>Failed to load URL {0} with error {1} ({2}).</h2></body></html>",
                args.FailedUrl, args.ErrorText, args.ErrorCode);

            args.Frame.LoadHtml(errorBody, base64Encode: true);
        };
        Unloaded += async delegate (object sender, RoutedEventArgs args)
        {
            BrowserTieView.WebBrowser.Dispose();
            BrowserTieView.Dispose();
            await Task.Delay(10);
        };


    }

    public ServiceJournalsViewModel VMServiceJournalsViewModel
    {
        get => (ServiceJournalsViewModel) DataContext;
        set { DataContext = value; }
    }

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        try
        {
            BrowserTieView.RegisterJsObject("serviceJournalsJsModel", VMServiceJournalsViewModel.ServiceJournalsJsModel);
        }
        catch (Exception ex)
        {

        }
    }

}

根据已发布问题的评论中的讨论(以及根据@amaitland)Cefsharp.BrowserSubprocess.exe 的多个实例是完全正常的。