调用Form.Close后表单不关闭

use*_*900 6 c# forms

我们有一个在客户端运行的应用程序正在显示奇怪的行为.在白天的随机时间,某些表单上的"确定"按钮(调用Form.Close方法)不会导致表单关闭.我的意思是用户将单击按钮,在跟踪中它将显示已调用Form.Close但表单将不会关闭.

奇怪的是,表单本身仍然是响应式的,因此他们可以单击表单上的任何按钮,按钮后面的代码将执行,但表单不会关闭.

这种状态持续几秒到几分钟.然后,表格突然开始处理并消失.真奇怪.

所以回顾一下,发生以下情况:

  • Form.ShowDialog() - >表格显示
  • 用户在表单上工作并按下按钮等
  • Form.Close() 被叫 - >用户点击了关闭按钮
  • 表单只是在等待关闭的同时仍然处于响应状态的时间量过去了(在这段时间内,受挫的用户多次敲击关闭按钮而没有响应)
  • 突然表格处理并从中返回对话框结果 Form.ShowDialog

注意事项:

  • 我没有使用任何类型的线程.
  • 在某些时候,据报道该explorer.exe进程已在PC上停止,这是否会对表单的行为产生影响?我们正在安排重建PC.

我的问题是,是否有人知道可能导致上述行为的情况?

我不是Forms的专家,但据我所知,当你调用时Form.Close,表单不会立即关闭,当前调用Close的方法首先完成,然后另一个进程触发表单开始关闭和处理.

这可能与explorer.exe未运行的进程有关吗?

任何见解将不胜感激.

***编辑

另请注意,我们无法复制该问题,它会在客户端随机发生.

zdi*_*ion 1

让我想起了C# 为什么 form.Close() 不关闭表单?

在 this.Close() 行之后的按钮单击事件处理程序中是否有任何代码?

我的意思是说:

private void OKButton_Click(object sender, EventArgs e)
{
    this.Close();

    somecodehere <-- is there any code here? (after this.Close)
}
Run Code Online (Sandbox Code Playgroud)

因为 Form.Close 不会立即关闭表单,所以如果调用后有代码,它仍然会执行,也许这就是阻止表单关闭的原因。