关闭窗体的时候,如果该窗体里面还有正在运行的线程,那么系统如何处理?

时间:2020-12-19 16:43:37
在弹出的一个对话框中,需要显示实时数据,所以我开了一个循环运行的线程,隔3秒钟就循环一次,如果用户点击关闭了该窗体,那么这个线程会自动退出吗还是需要在FormClose里面处理一下?

7 个解决方案

#1


不管怎么样。。。处理一下最保险。。。

#2


那如果不处理的话那么这个线程是会马上退出吗,假设我点关闭的时候恰好线程正在执行

#3


线程会把程序运行完 再退出,注意:是当前程序

#4


按你这个例子来说 会运行完当前循环再退出,不会运行下一次循环

#5


System.Environment.Exit(0)
试试吧

#6


设置线程的IsBackground属性为true。关闭窗体时会自动关闭线程。

#7


线程的资源并不依附于窗体,是另一块资源,你只关闭窗体,实际上线程并不会收到退出的命令。除非你把纯种或它的进程强制终止。

对于在窗体里使用线程,要么让线程自己结束,要么在窗体退出的时候结束掉线程。

因为线程应该可以这样分为两种,一种是没有循环的语句,它自己就是一个普通的方法,执行结束了线程也就结束了,这样的线程你可以不必关心它是否结束都可以关闭你的窗口。一种是有循环的语句,且这种循环可能一直在运行不会退出,这样你就要想办法让它退出,比如设置标志让它结束循环或是强制结束或是等待一段时间强制结束。

这就像你加班一下,虽然下班了,但是你没有走,要么把活干完再走,要么中断手头的活,要么干一会完不完的都要走。

#1


不管怎么样。。。处理一下最保险。。。

#2


那如果不处理的话那么这个线程是会马上退出吗,假设我点关闭的时候恰好线程正在执行

#3


线程会把程序运行完 再退出,注意:是当前程序

#4


按你这个例子来说 会运行完当前循环再退出,不会运行下一次循环

#5


System.Environment.Exit(0)
试试吧

#6


设置线程的IsBackground属性为true。关闭窗体时会自动关闭线程。

#7


线程的资源并不依附于窗体,是另一块资源,你只关闭窗体,实际上线程并不会收到退出的命令。除非你把纯种或它的进程强制终止。

对于在窗体里使用线程,要么让线程自己结束,要么在窗体退出的时候结束掉线程。

因为线程应该可以这样分为两种,一种是没有循环的语句,它自己就是一个普通的方法,执行结束了线程也就结束了,这样的线程你可以不必关心它是否结束都可以关闭你的窗口。一种是有循环的语句,且这种循环可能一直在运行不会退出,这样你就要想办法让它退出,比如设置标志让它结束循环或是强制结束或是等待一段时间强制结束。

这就像你加班一下,虽然下班了,但是你没有走,要么把活干完再走,要么中断手头的活,要么干一会完不完的都要走。