c# - 调用 Form.Close 后表单未关闭

标签 c# forms

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

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

此状态持续几秒到几分钟。然后表格会突然开始处理并消失。真奇怪。

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

  • Form.ShowDialog() -> 窗体显示
  • 用户处理表单并按下按钮等
  • Form.Close() 被调用 -> 用户点击了关闭按钮
  • 一段时间过去了,表单只是等待关闭,同时仍然有响应(在这段时间里,沮丧的用户敲了几次关闭按钮,没有任何响应)
  • 突然间,表单处理完毕,Form.ShowDialog
  • 返回一个对话框结果

注意事项:

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

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

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

这是否与 explorer.exe 进程未运行有关?

如有任何见解,我们将不胜感激。

*** 编辑

另请注意,我们无法重现该问题,它是在客户端随机发生的。

最佳答案

让我想起 C# Why does form.Close() not close the form?

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

我的意思是:

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

    somecodehere <-- is there any code here? (after this.Close)
}

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

关于c# - 调用 Form.Close 后表单未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34717073/

相关文章:

c# - 如何将 C# 静态方法中的值分配给标签

c# - 将 View 呈现为字符串

sonarqube 中的 C# 项目

javascript - 使用CSS更改输入字段的文本颜色

jquery - 如何像管理面板一样在 Django 中的外键中添加新项目?

c# - 对象的哈希值如何存储在字典中?

c# - 按 Enter 键时调用按钮单击事件 - c#

javascript - 没有 JS 经验 - 如何使用 Sweet Alert 来确认表单提交?

php - 如何在我的示例中使用 urlencode()?

javascript - 使用确认对话框提交表单时丢失按钮值