<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>

前几天在用c#  windows窗体编写坦克大战游戏时曾用过线程,在程序退出后会发现还有线程在后台运行(打开任务管理器可以看到) 现在用一部分代码来表达:            public Form1()             {             InitializeComponent();                    IPEndPoint ipendpoint=new IPEndPoint(IPAddress.Parse(txtIP.Text),int.Parse(txtPort.Text));              socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             socket.Bind(ipendpoint);             socket.Listen(10);                               }         }

上边的代码无需看懂;

接下来我再刚才的Form1()中添加如下代码:

即:   public Form1()             {                  。。。。。。。

//一下为添加代码

Thread threadlisten = new Thread(new ThreadStart(ThreadListen));                            threadlisten.Start();             }

当然程序中代码不仅仅如此,在此仅为说明问题才列出以上代码。

之后运行窗体程序后,关闭窗体。

在任务管理器中发现刚才的程序线程还在后台运行(如果你现在在运行该程序,vs就会报错提示有线程正在访问)

为什么会出现这个问题?

难道是关闭时没写线程销毁。

所以我又在程序中添加了如下代码:

this.Dispose();

或者

Application.Exit();

等代码,结果于事无补。

怎么解决哪?

那么就要分析线程的优先级以及线程的销毁周期

我们都知道程序退出的依据是当前程序的所有前台线程都退出(记住是前台线程),在一个正常的windows程序下,我们没有用线程,所以在退出时,

直接退出UI线程,即窗体就退出了当前程序;然而,我们一旦在程序中附加线程,那么默认情况下该线程也为前台线程,所以,我们在退出Ui(窗体)

时,并没有退出附加线程。

所以我们想办法把我们附加的线程变为后台线程即可。

在我们上面编的程序中加上threadlisten.IsBackground=True;

public Form1()            

{           

       。。。。。。。

//一下为添加代码

Thread threadlisten = new Thread(new ThreadStart(ThreadListen));

threadlisten.IsBackground=True;

threadlisten.Start();           

}

之后就可以正常退出。

<a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>

黑马程序员 关于c# windows窗体关闭时线程未能完全退出问题(专题一)的更多相关文章

  1. 黑马程序员+Winform基础(上)

    黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...

  2. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  3. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  4. 黑马程序员:3分钟带你读懂C/C++学习路线

    随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者.而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移 ...

  5. 黑马程序员——【Java高新技术】——代理

    ---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...

  6. 黑马程序员+SQL基础(上)

    黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...

  7. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  8. 黑马程序员:Java基础总结----泛型(高级)

    黑马程序员:Java基础总结 泛型(高级)   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...

  9. 黑马程序员:Java基础总结----类加载器

    黑马程序员:Java基础总结 类加载器   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...

随机推荐

  1. HDU 1228 字符串到数字的转化

    一道水题,练练字符串的输入输出 #include <cstdio> #include <cstring> using namespace std; ] , s2[]; int ...

  2. open redis port for remote connections

    edit /etc/redis.conf Add below line after bind 127.0.0.1, then try redis-cli -h xxx.xxx.xxx.xxx ping ...

  3. 3.3-ISDN

    3.3-ISDN     综合业务数字网ISDN(Integrated Services Digital Network):     ISDN主要有两种接口类型:分为BRI(2B+D=2×64+16K ...

  4. Cocos2d-x教程(34)-三维物体OBB碰撞检測算法

    欢迎增加Cocos2d-x 交流群:193411763 个中心点.1个旋转矩阵和3个1/2边长(注:一个旋转矩阵包括了三个旋转轴,若是二维的OBB包围盒则是一个中心点,两个旋转轴,两个1/2边长). ...

  5. GPU 编程入门到精通(三)之 第一个 GPU 程序

    博主因为工作其中的须要.開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...

  6. C++学习之模板特例化

    模板是C++中一个很重要的特性,写一份代码能用于多种数据类型(包括用户自定义类型).例如,STL的sort()函数可以用于多种数据类型的排序,类stack可以用作多种数据类型的栈.但是,如果我们想对特 ...

  7. apache在windows下的命令安装与报错解决

    1.在windows下能够通过执行apache的exe文件就能够,但当我们打包的时候,就须要命令来安装apache.apache在windows下用命令下的安装为: apache.exe -k ins ...

  8. ubuntu拨号上网以及路由设置

    1.宽带拨号 配置宽带连接信息:pppoeconf 拨号:pon dsl-provider 断开连接:poff dsl-provider 查看拨号日志:plog 2.路由设置 以下为rc.local文 ...

  9. 软件project—思考项目开发那些事(一)

    阅读文件夹: 1.背景 2.项目管理,质量.度量.进度 3.软件开发是一种设计活动而不是建筑活动 4.高速开发(简单的系统结构与复杂的业务模型) 5.技术人员的业务理解与产品经理的业务理解的终于业务模 ...

  10. 500万url的es 批删除

    bash  循环 算术计算 读写文件 [root@hadoop2 ~]# sh looh.sh1234LIZ1 2 3 4 0 1 2 3 4 5 6 7 8 9 10 0games:x:12:100 ...