未能注销 class Chrome_WidgetWin_0。错误
Failed to unregister class Chrome_WidgetWin_0. Error
背景
我正在使用 Elixir Desktop 制作一个 elixir 桌面应用程序:
https://github.com/elixir-desktop/desktop
并且我能够成功启动和管理我的应用程序。但是,当我关闭它时,我总是会收到此错误:
[1224/050609.437:ERROR:window_impl.cc(115)] Failed to unregister class Chrome_WidgetWin_0. Error = 203
问题
这里其实有两个问题
- 在我按下
Quit
后,应用程序需要很长时间才能关闭。 Phoenix 收到消息(请参阅 Ì AM LEAVING
日志)但由于某种原因 window 需要几秒钟才能关闭。
- 我收到前面提到的错误
代码
此时这个 HelloWorld 项目的 90% 是由 mix
生成的代码。我只更改了 2 个可能与此处相关的文件:
menubar.ex
defmodule WebInterface.MenuBar do
@moduledoc """
Menubar that is shown as part of the main Window on Windows/Linux. In
MacOS this Menubar appears at the very top of the screen.
"""
import WebInterface.Gettext
use Desktop.Menu
alias Desktop.Window
@impl Desktop.Menu
def render(assigns) do
~H"""
<menubar>
<menu label={gettext("File")}>
<hr/>
<item onclick="quit"><%= gettext "Quit" %></item>
</menu>
<menu label={gettext("Extra")}>
<item onclick="browser"><%= gettext "Open Browser" %></item>
</menu>
</menubar>
"""
end
@impl Desktop.Menu
def handle_event("quit", menu) do
IO.puts("I AM LEAVING")
Window.quit()
{:noreply, menu}
end
def handle_event("browser", menu) do
WebInterface.Endpoint.url()
|> Window.prepare_url()
|> :wx_misc.launchDefaultBrowser()
{:noreply, menu}
end
@impl Desktop.Menu
def mount(menu) do
{:ok, menu}
end
@impl Desktop.Menu
def handle_info(:changed, menu) do
{:noreply, menu}
end
end
applications.ex
defmodule WebInterface.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
use Application
alias Desktop
@impl true
def start(_type, _args) do
children = [
WebInterface.Telemetry,
{Phoenix.PubSub, name: WebInterface.PubSub},
WebInterface.Endpoint,
{Desktop.Window,
[
app: :web_interface,
id: WebInterface,
title: "Web Interface",
size: {600, 500},
menubar: WebInterface.MenuBar,
url: &WebInterface.Endpoint.url/0
]}
]
opts = [strategy: :one_for_one, name: WebInterface.Supervisor]
Supervisor.start_link(children, opts)
end
@impl true
def config_change(changed, _new, removed) do
WebInterface.Endpoint.config_change(changed, removed)
:ok
end
end
我希望这个错误是由于配置错误或我没有正确实现的某些功能引起的。
我该如何解决这个错误?
回答
在撰写本文时,作者在 Github 中推送了对 Master 的修复。
此修复解决了应用程序关闭时间过长的问题,但未解决 Chrome_WidgetWin_0. Error
问题。
这个问题是已知的并且已经被报告过,但是没有迹象表明 Chrome 项目已经解决了它,所以我想我们暂时只能接受它:
https://bugs.chromium.org/p/chromium/issues/detail?id=113008
另一个问题是崩溃。很可能是因为上一期的缘故,所以这里也无能为力了。
由于主要问题已解决,我将其标记为已解决。
背景
我正在使用 Elixir Desktop 制作一个 elixir 桌面应用程序: https://github.com/elixir-desktop/desktop
并且我能够成功启动和管理我的应用程序。但是,当我关闭它时,我总是会收到此错误:
[1224/050609.437:ERROR:window_impl.cc(115)] Failed to unregister class Chrome_WidgetWin_0. Error = 203
问题
这里其实有两个问题
- 在我按下
Quit
后,应用程序需要很长时间才能关闭。 Phoenix 收到消息(请参阅Ì AM LEAVING
日志)但由于某种原因 window 需要几秒钟才能关闭。 - 我收到前面提到的错误
代码
此时这个 HelloWorld 项目的 90% 是由 mix
生成的代码。我只更改了 2 个可能与此处相关的文件:
menubar.ex
defmodule WebInterface.MenuBar do
@moduledoc """
Menubar that is shown as part of the main Window on Windows/Linux. In
MacOS this Menubar appears at the very top of the screen.
"""
import WebInterface.Gettext
use Desktop.Menu
alias Desktop.Window
@impl Desktop.Menu
def render(assigns) do
~H"""
<menubar>
<menu label={gettext("File")}>
<hr/>
<item onclick="quit"><%= gettext "Quit" %></item>
</menu>
<menu label={gettext("Extra")}>
<item onclick="browser"><%= gettext "Open Browser" %></item>
</menu>
</menubar>
"""
end
@impl Desktop.Menu
def handle_event("quit", menu) do
IO.puts("I AM LEAVING")
Window.quit()
{:noreply, menu}
end
def handle_event("browser", menu) do
WebInterface.Endpoint.url()
|> Window.prepare_url()
|> :wx_misc.launchDefaultBrowser()
{:noreply, menu}
end
@impl Desktop.Menu
def mount(menu) do
{:ok, menu}
end
@impl Desktop.Menu
def handle_info(:changed, menu) do
{:noreply, menu}
end
end
applications.ex
defmodule WebInterface.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
use Application
alias Desktop
@impl true
def start(_type, _args) do
children = [
WebInterface.Telemetry,
{Phoenix.PubSub, name: WebInterface.PubSub},
WebInterface.Endpoint,
{Desktop.Window,
[
app: :web_interface,
id: WebInterface,
title: "Web Interface",
size: {600, 500},
menubar: WebInterface.MenuBar,
url: &WebInterface.Endpoint.url/0
]}
]
opts = [strategy: :one_for_one, name: WebInterface.Supervisor]
Supervisor.start_link(children, opts)
end
@impl true
def config_change(changed, _new, removed) do
WebInterface.Endpoint.config_change(changed, removed)
:ok
end
end
我希望这个错误是由于配置错误或我没有正确实现的某些功能引起的。
我该如何解决这个错误?
回答
在撰写本文时,作者在 Github 中推送了对 Master 的修复。
此修复解决了应用程序关闭时间过长的问题,但未解决 Chrome_WidgetWin_0. Error
问题。
这个问题是已知的并且已经被报告过,但是没有迹象表明 Chrome 项目已经解决了它,所以我想我们暂时只能接受它: https://bugs.chromium.org/p/chromium/issues/detail?id=113008
另一个问题是崩溃。很可能是因为上一期的缘故,所以这里也无能为力了。
由于主要问题已解决,我将其标记为已解决。