gpt4 book ai didi

c# - MonoMac 窗口无错误关闭

转载 作者:行者123 更新时间:2023-11-30 17:48:11 24 4
gpt4 key购买 nike

我刚开始在 Xamarin Studio 中使用 MonoMac,我遇到了最奇怪的问题:

我有一个带有 NSButton 和 NSTextField 的窗口。至此,我已经删除了按钮上的事件处理程序,所以它什么都不做,除了在我单击它时突出显示。按钮创建代码如下所示:

nsButton = new NSButton(new System.Drawing.RectangleF(0, 0, 100, 100));
nsButton.BezelStyle = NSBezelStyle.RoundRect;
nsButton.Font = NSFont.SystemFontOfSize(
NSFont.SystemFontSizeForControlSize(NSControlSize.Regular));
nsButton.StringValue = text;

...然后它像这样被添加到窗口中:

nsView.AddSubview(control.Handle as NSView);

(因为在这部分代码中,control.Handle被类型化为object,而nsView是window上的主视图)。

一开始一切都运行良好。但是,如果我反复点击那个按钮,最终窗口就会关闭。没有错误,没有异常,应用程序本身也没有退出;当我使用它们时,菜单会继续响应并愉快地记录消息。但是窗口只是——消失了。

它具有极高的可重复性:它在 21 次点击后发生。如果我添加一个更新 NSTextField 的事件处理程序(例如 hello.Caption="Foo";),那么它会在 19 次点击后发生。我点击快点还是慢点都没有关系;它总是相同的点击次数。请注意,项目中没有关闭窗口的代码,窗口甚至没有关闭框;我知道除了退出应用程序之外没有任何合法的方法可以关闭它。

我在这里很困惑,不知道如何进一步调试它。 Xamarin 是否有某种评估限制,可以在发生这么多事件后关闭您的窗口?它是一个框架错误吗?任何见解将不胜感激。

最佳答案

But, if I click repeatedly on that button, eventually the window just closes. No error, no exception, and the app itself doesn't quit; menus continue to respond and cheerfully log messages when I use them. But the window is simply -- gone.

这种“消失得无影无踪”有时会在应用程序在 native 代码中严重崩溃时发生。这可能是由于绑定(bind)代码中的错误或调用破坏内部 Cocoa 状态的 native API 时所犯的错误。我相信您使用的是 MonoMac,并且此特定问题已在 Xamarin.Mac 中修复。

有时您可以从输出窗口或通过将 lldb 附加到您的进程来获得更多信息。

关于c# - MonoMac 窗口无错误关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23432954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com