有没有办法结束webview2的异步截屏?

问题描述 投票:0回答:2

我将在wpf应用程序中使用webview2进行视频聊天。

但是,由于 webview2 是异步运行的,即使窗口关闭,它也会识别出用户没有离开服务器。

我只是做了一个按钮,当它被点击时,

Window.GetWindow(this).Close();
我实现了这个语法来工作并且用户离开服务器。

但是,当用户退出而没有按下wpf窗口中的按钮时,webview2正在后台工作。

wpf内退出窗口时有没有办法在后台退出webview2?

public Webcam()
{
    InitializeComponent();
}
protected override async void OnContentRendered(EventArgs e)
{
    base.OnContentRendered(e);
    try
    {
        **var webView2Environment = await CoreWebView2Environment.CreateAsync();**
        await webView.EnsureCoreWebView2Async(webView2Environment);
        webView.CoreWebView2.Navigate("ServerIP");
        string test = "JoinRoom(test)";

        webView.CoreWebView2.NavigationCompleted += CoreWebView2_NavigationCompleted;
    }
    catch (Exception exception)
    {

    }
}
private void CoreWebView2_NavigationCompleted(object? sender, Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs e)
        {
            string test = "UserID";
            webView.CoreWebView2.PostWebMessageAsString(test);
        }
private void Button_Click(object sender, RoutedEventArgs e)
        {
            string leaveroom = "leaveRoom";
            webView.CoreWebView2.PostWebMessageAsString(leaveroom);
            **Window.GetWindow(this).Close();**
        }

c# wpf asynchronous webview2
2个回答
1
投票

关闭 WebView2 所在的窗口是不够的。

您将需要调用 Dispose(请参阅 Webview2 实例上的 MS 以便对其进行处理。


0
投票

考虑到您在 UserControl 工具中有 webview2 工具,您必须在完成任务后停止并自动终止每个进程:

public U_WebView()
{
    InitializeComponent();
    VisibleChanged += U_WebView_VisibleChanged;
}
private void U_WebView_VisibleChanged(object? sender, EventArgs e)
{
    if (!Visible)
    {
        webView21.Stop();
        webView21.Dispose();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.