【发布时间】:2016-01-11 08:34:31
【问题描述】:
我们有一个在客户端运行的应用程序显示奇怪的行为。在一天中的随机时间,某些表单上的确定按钮(调用 Form.Close 方法)不会导致表单关闭。我的意思是用户将单击该按钮,在跟踪中它将显示调用了 Form.Close 但表单不会关闭。
奇怪的是,表单本身仍然是响应式的,因此他们可以单击表单上的任何按钮,并且按钮后面的代码将执行,但表单不会关闭。
这种状态会持续几秒到几分钟。然后突然表格将开始处理并消失。真奇怪。
所以回顾一下,会发生以下情况:
-
Form.ShowDialog()-> 表单显示 - 用户在表单上工作并按下按钮等
-
Form.Close()被调用 -> 用户点击了关闭按钮 - 经过一段时间后,表单仍处于响应状态,只是等待关闭(此时,沮丧的用户敲击了几次关闭按钮,但没有任何响应)
- 突然表单处理并从
Form.ShowDialog返回一个对话结果
注意事项:
- 我没有使用任何类型的线程。
- 在某些时候报告
explorer.exe进程已在PC 上停止,这会对表单的行为产生影响吗?我们正在计划重建 PC。
我的问题是,是否有人知道可能导致上述行为的场景?
我不是表单专家,但据我了解,当您调用 Form.Close 时,表单不会立即关闭,当前调用 Close 的方法首先完成,然后另一个进程触发表单开始关闭并处置。
这可能与explorer.exe 进程未运行有关吗?
任何见解将不胜感激。
*** 编辑
另请注意,我们无法复制该问题,它在客户端随机发生。
【问题讨论】:
-
this 可能适合你吗?
-
@SimonKarlsson 我查看了您的链接,但情况不同。 Close 方法在其自身显示的模态表单上调用,因此问题不在于阻塞调用。另请注意,我们无法复制该问题,它是随机发生的。
-
如果没有重现,我怀疑任何人都能够帮助您解决它。因此,我建议您将精力投入到创建复制品中。识别可能发生的机器和似乎永远不会发生的机器之间的差异。然后,尝试确定哪些差异是重要的。例如。操作系统版本,其他软件也在运行,32 位与 64 位,但更多。
-
@Damien_The_Unbeliever 我怀疑你是对的。我有一种感觉,它与导致此问题的环境本身的问题(如 exporer.exe 进程崩溃)有关。我希望其他人遇到这个问题并且可以确认这是一个环境问题。