【问题标题】:WinForms application becomes randomly unresponsiveWinForms 应用程序随机无响应
【发布时间】:2012-03-18 22:52:33
【问题描述】:

我们正在构建一个基于 WinForms 的应用程序(使用 .NET 3.5)

最近我遇到了在执行我们应用程序的一个主要工作流程时,应用程序将在几秒钟内变得无响应,无法正确呈现 UI(显示“程序没有响应”消息)。

我们已将问题简化为向标签控件添加工具提示的可疑代码行:

ToolTip tooltip = new ToolTip();
tooltip.SetTooltip(label, "something");

过去 2 天我一直在弄清楚这段代码中的哪些内容可以对 UI 线程的任何问题进行编码,但没有这样做。

我的问题是——是否可以使用性能分析器来收集有关此类代码的信息?请注意,ToolTip 类属于 WinForms,我没有可用的源代码。

删除这些行似乎可以完全解决问题。 我想在未来减少调试工作,因为这个问题可能会出现在我们代码库的其他位置。

编辑: 我能找到的唯一类似的报告问题是:WinForm ToolTip.SetToolTip is Hanging my application :(

【问题讨论】:

  • 工具提示的Popup 事件是否附加了任何处理程序?
  • 不,工具提示是添加到 Label 的 TextChanged 事件上的,并且本身不注册任何处理程序。
  • 您是在创建,然后从另一个线程设置工具提示吗?
  • 创建 + 设置(我发布的代码)发生在标签控件的事件处理程序中(发生在主线程 AFAIK 上)。
  • AFAIK 没有帮助。既然你的两行代码是完全有效的。

标签: c# .net winforms visual-studio


【解决方案1】:

您可以使用诸如JetBrains DotTrace 之类的程序来查看实际导致程序停止的情况

【讨论】:

  • 我已经有一段时间没有使用它了,但我相信它会融入其中。然后您可以使用他们的其他程序 dotPeek 来实际查看源代码
【解决方案2】:

我有同样的问题,除了我使用了使用设计器放置的 ToolTip 对象,然后在 ToolTip 的 Popup 事件中设置了 ToolTip 的文本。

该问题仅出现在 Windows 7 64 位(我无法测试 32 位 Win7)上,在 32 位 Windows XP 上,这工作正常。

编辑:我想有一些弹出事件的反复调用,因为当我将收费提示设置移动到我的代码的其他位置时,它可以正常工作。

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 2011-12-29
    • 2011-12-26
    • 2015-11-06
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2022-12-24
    相关资源
    最近更新 更多