在 winform 中,我有一个调用的方法,this.Close
并且在该方法中遵循了一些代码行。现在既然方法不是static
,那么是否保证这些代码行会被执行?这些行不使用当前 winform 实例中的任何资源。
问问题
1247 次
4 回答
1
您可以通过处理Form.FormClosed事件来做到这一点。
从这里运行您需要的代码,它应该可以正常工作。
于 2013-06-18T10:03:09.977 回答
1
如果这是您的 Main-Form,由 Program.cs 调用,您可以将代码行复制this.Close()
到您的 Program.cs
这看起来像:
...
Application.Run(new frmMain());
// Your code here
...
于 2013-06-18T10:10:05.183 回答
0
简而言之:不。如果保持原样,每次调用后都会有一场比赛,看是否可以在命令将它们从内存中删除this.Close
之前执行紧随其后的代码行。Close
最好在别处运行这些代码行。想想看,他们真的需要在关闭表单后执行吗?如果是这样,您总是可以将它们放在另一个班级或FormClosed
活动中等。
于 2013-06-18T10:06:52.797 回答
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.Close() 之后处理的成员字段。但是有更优雅的方法可以做到这一点(参见其他答案)。
于 2013-06-18T10:12:42.170 回答