1.概要
1.1 概要结果
初衷:想让一些内存中的变量在系统退出的时候,可以自动备份。
问:异常退出会不会调closing接口?
答:不会。
原因:因为异常退出,没有winform完整的生命周期。
1.2 试验结果详细
试验项目 | 异常关闭 | 正常关闭 |
FormClosing(关闭时) | 不调用 | 调用 |
FormClosed(关闭完成时) | 不调用 | 调用 |
~Form1(析构函数) | 不调用 | 不调用 |
2.代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 异常退出会不会调closing接口
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 异常事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
int a = 2;
int b = a / 0;
}
/// <summary>
/// 关闭时
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
MessageBox.Show("关闭时");
}
/// <summary>
/// 析构
/// </summary>
~Form1()
{
MessageBox.Show("析构");
}
/// <summary>
/// 关闭完
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("关闭完");
}
}
}
3.运行结果
4.1 俘虏
在整个窗体生命周期中,有以下6个重要的事件:
1.Load:窗体加载时触发,主要用于加载初始数据
2.Shown:窗体显示时触发
3.Activated:窗体获取焦点时触发
4.Deactivate:窗体失去焦点时触发
5.FormClosing:窗体关闭过程中触发
6.FormClosed:窗体关闭完成触发