babalae/better-genshin-impact · error · InvalidOperationException
最多同时打开 {MaxWindows} 个HTML遮罩窗口
Error message
最多同时打开 {MaxWindows} 个HTML遮罩窗口 What it means
Error "最多同时打开 {MaxWindows} 个HTML遮罩窗口" thrown in babalae/better-genshin-impact.
Source
Thrown at BetterGenshinImpact/View/HtmlMaskWindow.xaml.cs:80
#region 静态窗口管理
/// <summary>
/// 显示HTML遮罩窗口
/// </summary>
public static string Show(string url, string? id, string workDir)
{
return Application.Current.Dispatcher.Invoke(() =>
{
// 指定ID时先关闭已有窗口
if (id != null && _windows.TryGetValue(id, out var existing))
{
existing.Close();
}
if (_windows.Count >= MaxWindows)
{
throw new InvalidOperationException($"最多同时打开 {MaxWindows} 个HTML遮罩窗口");
}
var window = new HtmlMaskWindow(url, id, workDir);
string wid = window.MaskId;
_windows[wid] = window;
window.Closed += (_, _) =>
{
_windows.TryRemove(wid, out _);
window.DisposeWebView();
};
window.Show();
return wid;
});
}
/// <summary>
/// 关闭指定窗口
/// </summary>View on GitHub (pinned to a7cb36712d)
Solutions
- 关闭部分已打开的 HTML 遮罩窗口后再创建新窗口
- 在脚本中复用已有窗口而不是重复创建
- 检查脚本逻辑避免在循环中不断创建窗口
Example fix
打开新窗口前关闭不再需要的遮罩窗口,或复用相同 id 使旧窗口被替换关闭。
When it happens
Trigger: HtmlMaskWindow.Show 时静态字典 _windows 中已打开窗口数达到 MaxWindows 上限,再次打开即抛出。
Common situations: 脚本/功能频繁打开HTML遮罩窗口而未关闭旧窗口(指定相同id会先关闭,不同id则累积)。
AI-assisted analysis of babalae/better-genshin-impact@a7cb36712d (2026-08-13).
Data as JSON: /api/errors/5ef08b0dfab09238.
Report an issue: GitHub.