在winform中,我有一个调用this.Close
的方法,并在方法中跟随一些代码行。既然该方法不是static
,那么是否可以保证执行这些代码行?这些行不使用winform的当前实例中的任何资源。
答案 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()之后处理的成员字段。但是有更优雅的方法可以执行它(参见其他答案)。