C# 使用多线程在关闭窗体时如何关闭所有线程,使程序退出不产生报错

在winform开发中,程序内部使用了多线程或定时器等功能,在关闭窗体退出程序时,如果只有UI线程关闭,而托管线程还在运行就会报错。

关闭线程的方法有以下几种,其中最彻底的方法为:System.Environment.Exit(0); 

 

  1. this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
  2. Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;
  3. Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程法正确退出的问题;
  4. System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
  5. Thread_VIEW.Abort(); //关闭Thread_VIEW线程
  6. Thread_SAVE.Abort(); //关闭Thread_SAVE线程

posted on 2022-12-13 09:07  hanzq_go  阅读(1181)  评论(0编辑  收藏  举报

导航