写点什么

C# 关于程序退出问题学习

作者:IC00
  • 2022-10-25
    湖南
  • 本文字数:2087 字

    阅读完需:约 7 分钟

C# 关于程序退出问题学习

前言:

C#程序退出有几种方法,但是具体的方法是什么呢,我们会用吗,当然也有可能会用的,也有不会用,对于这方面的知识,我们都得去学习一下,去探讨一下,对于我们开发程序或者是去学习,我们都得去敲一下看看,自己会不会,不会就学,创作不易,点赞关注评论收藏,你的点赞是我创作的动力,也是我学习的方向。


界面设计:

我们新建一个程序,简单设计一下窗口,并多建几个窗口,方便我们去关闭


Close 方法

Close 方法是关闭窗口,如果你是在主窗口调用其他的窗口,想在主窗口关闭其他串口,Close 是不能实现的,Close 只能关闭当前活动界面的窗体。


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 WindowsFormsApp8{ public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) { }
private void button1_Click(object sender, EventArgs e) { this.Close(); }
private void button2_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); } }}
复制代码



Application.Exit(); 方法

强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;


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 WindowsFormsApp8{ public partial class Form2 : Form { public Form2() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { Application.Exit(); } }}
复制代码


Application.ExitThread();

强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题,这个函数和上一个差不多,这个是退出线程,在其他窗口调用会退出主线程


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 WindowsFormsApp8{ public partial class Form2 : Form { public Form2() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { Application.ExitThread(); } }}
复制代码


System.Environment.Exit(0);

这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净,退出时有可能会抛出异常


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 WindowsFormsApp8{ public partial class Form2 : Form { public Form2() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { System.Environment.Exit(0); } }}
复制代码


System.Diagnostics.Process 的 Kill

直接杀死与本程序相关的所有进程,有可能会导致数据丢失,但是不会抛出异常。



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 WindowsFormsApp8{ public partial class Form2 : Form { public Form2() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { System.Diagnostics.Process process = System.Diagnostics.Process.GetProcessById(System.Diagnostics.Process.GetCurrentProcess().Id); process.Kill(); } }}
复制代码

总结

这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!



发布于: 刚刚阅读数: 7
用户头像

IC00

关注

一个热爱生活,喜欢拍照的热血青年 2022-07-14 加入

一个想学习技术的小盆友,想努力更文,争取今年发100篇

评论

发布
暂无评论
C# 关于程序退出问题学习_C#_IC00_InfoQ写作社区