我将在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();**
}
关闭 WebView2 所在的窗口是不够的。
您将需要调用 Dispose(请参阅 Webview2 实例上的 MS 以便对其进行处理。
考虑到您在 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();
}
}