MonoMac窗口关闭时没有错误到目前为止,我已经删除了按钮上的事件处理程序,所以它除了在我单击它时突出显示外什么都不做。按钮创建代码如下所示:nsButton=newNSButton(newSystem.Drawing.RectangleF(0,0,100,100));nsButton.BezelStyle=NSBezelStyle.RoundRect;nsButton.Font=NSFont.SystemFontOfSize(NSFont.SystemFontSizeForControlSize(NSControlSize.Regular));nsButton.StringValue=文本;...然后它将像这样添加到窗口中:nsView.AddSubview(control.HandleasNSView);(因为在这部分代码中,control.Handle是作为object进入的,而nsView是window上的主视图)。所有运行和工作正常。但是,如果我反复单击该按钮,最终窗口会关闭。没有错误,没有异常,应用程序本身永远不会退出;当我使用它们时,菜单会继续响应并愉快地记录消息。但是Windows很容易-去。这是非常可重复的:它发生在21次点击之后。如果我添加一个更新NSTextField的事件处理程序(例如hello.Caption="Foo";),那么它会在19次点击后发生。快或慢都没关系;它总是相同的点击次数。请注意,项目中没有关闭窗口的代码,窗口甚至没有关闭框;我知道没有合法的方法可以在不退出应用程序的情况下关闭它。我被难住了,不知道如何进一步调试。Xamarin中是否有某种评估限制可以在这么多活动后关闭您的窗口?这是一个框架错误吗?任何见解将不胜感激。但是,如果我反复单击该按钮,最终窗口会关闭。没有错误,没有异常,应用程序本身永远不会退出;当我使用它们时,菜单会继续响应并愉快地记录消息。但是Windows很容易-去。当应用程序在本机代码中崩溃时,有时会出现“无中生有”。这可能是由于绑定代码中的错误或调用破坏内部可可状态的本机API的错误。我相信您使用的是MonoMac,并且这个特殊问题已在Xamarin.Mac中修复。有时您可以从输出窗口中获取更多信息,或者将lldb附加到进程。结果与本题相同,仅略有不同。简而言之,我没有保留对NSWindow对象的引用,而是让它超出范围。因此GUI窗口会保留一段时间,但最终(在某些事件或其他代码创建幕后垃圾之后)它会被垃圾收集器注意到并处理掉。然后拆下窗户。仔细想想,这一切都非常有意义,并且在Xamarin和MonoMac下都会发生(只是时间略有不同)。当然,简单的解决方案是保留对窗口的引用,直到您真正完成它为止。问题已经解决了!(是的,我觉得有点害羞,但希望未来的MacC#开发人员发现这个问题并给他们带来一些悲伤。)以上就是关于C#学习教程的所有分享:MonoMac窗口无错误关闭每个人都是有用的,需要了解有关C#学习教程的更多信息。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
