在winform上调用this.close后执行代码

时间:2013-06-18 09:59:23

标签: c# .net winforms

在winform中,我有一个调用this.Close的方法,并在方法中跟随一些代码行。既然该方法不是static,那么是否可以保证执行这些代码行?这些行不使用winform的当前实例中的任何资源。

4 个答案:

答案 0 :(得分:1)

您可以通过处理Form.FormClosed事件来完成此操作。

从这里运行您需要的代码,它应该可以正常工作。

答案 1 :(得分:1)

如果这是您的Main-Form,由Program.cs调用,您可以将this.Close()的代码行复制到Program.cs

这看起来像:

...
Application.Run(new frmMain());
// Your code here
...

答案 2 :(得分:0)

简而言之:不会。如果保持原样,每次调用this.Close之后都会有竞争,看看在Close命令删除之前是否可以执行紧接着的代码行他们来自记忆。在其他地方运行这些代码行会更好。想一想,他们真的需要在关闭表格后执行吗?如果是这样,您可以将它们放在另一个类中,或者放在FormClosed事件中等等。

答案 3 :(得分:0)

这是Form.Close方法的主体:

public void Close() {
  if (base.GetState(262144)) {
    throw new InvalidOperationException(SR.GetString("ClosingWhileCreatingHandle", new object[]       {
            "Close"
        }));
  }
  if (base.IsHandleCreated) {
    this.closeReason = CloseReason.UserClosing;
    base.SendMessage(16, 0, 0);
    return;
  }
  base.Dispose();
}

你最终可以看到它正在处理Form本身,但它不是终止线程或类似的东西。所以我的钱就是总是会执行的行(除非他们触及可以在Form.Close()之后处理的成员字段。但是有更优雅的方法可以执行它(参见其他答案)。