【问题标题】:WinForms Application HangsWinForms 应用程序挂起
【发布时间】:2010-05-11 12:59:12
【问题描述】:

我有一个我开发的应用程序 (ABC),它是一个 Windows 应用程序 (.exe)。它本身就是一个相当大的应用程序,引用了很多 dll。

但是,现在有一项要求要求此应用程序 (ABC) 成为更大应用程序 (XYZ) 的一部分。因此,我不得不将“ABC”的项目类型从 Windows 应用程序更改为类库,并通过更改几行代码。

我的问题是,自从我开始使用 ABC 作为 XYZ 的一部分后,如果我对它执行任何操作 10 到 15 分钟,应用程序就会开始挂起......我在运行它时没有任何问题单独的应用程序。

出现这种情况的任何原因?

任何建议将不胜感激......

谢谢, 拉姆

【问题讨论】:

  • 您是否尝试过附加调试器并暂停应用程序以查看线程处于什么状态?
  • 调用堆栈告诉你什么?
  • 感谢 codeka... 很抱歉,我无法完全接受您的建议... 请详细说明一下?
  • @Rowland :当我在用户机器上安装此应用程序时运行此应用程序时会发生这种情况......但是只有在正确调试时才能查看调用堆栈(如果我错了,请纠正我)?我还没有尝试在调试时让它空闲...我会尝试一下...

标签: c# winforms


【解决方案1】:

在调试器中启动 XYZ。等待应用挂起,暂停调试器,然后查看进程中的每个线程都在忙什么。

打开“所有异常中断”也可能会有所帮助

【讨论】:

  • 谢谢 Rob...我会尝试...但有一件事:>>看看你的进程中的每个线程都在忙什么
  • 嗨,我尝试将应用程序留在调试器中......但是当它处于调试模式时(即,当我在 VS 中运行它时),挂起永远不会发生......但是,如果我安装在我尝试调试的同一台机器上的应用程序,应用程序挂起。所以这就是我所做的。我安装了应用程序。等它挂了。将我的调试器附加到挂起的应用程序。打开线程窗口并打开中断。我可以看到列出了几个线程。执行箭头指向一个线程。这是否意味着该线程是导致挂起的线程?还是我走错了方向。请指教
  • 嘿,好主意。否 - VS 无法告诉您哪个线程有问题。浏览它们,看看它们正在运行哪些代码。运行 ABC 或 XYZ 代码的可能是罪魁祸首
【解决方案2】:

您还可以使用remote debugging 来调试在用户机器上运行的应用程序。在您的开发机器上,您可以附加到用户机器上的进程,然后进行调试中断以查看线程在做什么。

【讨论】:

    猜你喜欢
    • 2013-03-04
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多