2 second webview cache.

This commit is contained in:
Burak Kaan Köse
2026-04-07 09:52:37 +02:00
parent 9855170b2e
commit a9fd624742
4 changed files with 34 additions and 7 deletions
@@ -1,11 +1,15 @@
using System;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks;
using Microsoft.Web.WebView2.Core;
namespace Wino.Mail.WinUI.Extensions;
public static class WebViewExtensions
{
private static readonly object _environmentLock = new();
private static bool _environmentInitialized;
private static Task<CoreWebView2Environment>? _sharedEnvironmentTask;
/// <summary>
/// Sets WebView2 environment variables once per process.
@@ -22,6 +26,17 @@ public static class WebViewExtensions
_environmentInitialized = true;
}
public static Task<CoreWebView2Environment> GetSharedEnvironmentAsync()
{
EnsureWebView2Environment();
lock (_environmentLock)
{
_sharedEnvironmentTask ??= CoreWebView2Environment.CreateAsync().AsTask();
return _sharedEnvironmentTask;
}
}
/// <summary>
/// Executes a script function in the WebView2 control.
/// </summary>