c# 退出应用时进程不关闭问题
2017-08-31 09:27
260 查看
摘要问题描述
原理介绍
代码实例
原理介绍
代码实例
摘要/问题描述
在写上位机过程中需要写一个UDP持续监听的功能,实现方式选择新建while循环进程的方法。但是调试过程中发现,关闭界面后,线程还在后台持续运行。经查询资料,最终选择Thread的IsBackground属性来实现应用退出时自动结束线程。原理介绍
线程开启后默认为前台线程,如果关闭应用,此线程不会关闭,会在系统持续运行直到此线程运行结束(本例中需要持续监听,所以线程开启了while(true)无限循环,如果主应用不abort,线程自己不会结束)。设置IsBackground属性为true后,关闭应用,此线程自动终止。代码实例
由于项目很大,在此只贴出能够展现此博文表述问题的代码块。// This constructor arbitrarily assigns the local port number. UdpClient udpClient = null; Thread thread; private void BUTTudpConnect_Click(object sender, EventArgs e) { if (BUTTudpConnect.Text == "connect") { udpClient = new UdpClient(Convert.ToInt32(TBLocalPort.Text)); try { udpClient.Connect(TBRemoteIP.Text, Convert.ToInt32(TBRemotePort.Text)); UdpSend( udpClient); thread = new Thread(UdpListing); thread.Start(udpClient); thread.IsBackground = true; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } BUTTudpConnect.Text = "disconnect"; } else { thread.Abort(); BUTTudpConnect.Text = "connect"; udpClient.Close(); } } private void UdpListing(Object obj) { UdpClient udpClient; udpClient = (UdpClient)obj; //IPEndPoint object will allow us to read datagrams sent from any source. IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); while(true) { // Blocks until a message returns on this socket from a remote host. Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); string returnData = Encoding.ASCII.GetString(receiveBytes); // Uses the IPEndPoint object to determine which of these two hosts responded. MessageBox.Show("This is the message you received " + returnData.ToString()); } }
相关文章推荐
- C# 关闭登录窗体,进入主窗体后,主窗体关闭,程序进程仍在运行的问题
- C#.NET常见问题(FAQ)-如何捕捉窗体关闭的事件,弹窗确认是否退出
- C#.NET常见问题(FAQ)-如何捕捉窗体关闭的事件,弹窗确认是否退出
- C# 关闭登录窗体,进入主窗体后,主窗体关闭,程序进程仍在运行的问题
- 怎样快速批量关闭win 8无法退出的全屏Metro应用的问题
- eclipse none版本 win7系统 进程关闭后 不自动退出的问题
- Tomcat关闭后,应用进程无法退出的解决方案
- C# 启动线程后,关闭form窗体,进程未关闭问题
- C#.NET常见问题(FAQ)-如何强制退出进程
- 在MFC中 应用OpenCV 关闭主窗口后进程无法正常退出
- c#项目关闭窗口却不能关闭进程问题的解决
- 程序关闭进程没有退出的问题
- C# 使用Thread多线程,窗体关闭后进程不退出的解决方案
- C# 关闭登录窗体,进入主窗体后,主窗体关闭,程序进程仍在运行的问题
- 黑马程序员 关于c# windows窗体关闭时线程未能完全退出问题(专题一)
- C# Bitmap保存的问题,eg:GDI+中发生一般性错误 .jpg 正由另一个进程使用 ,该进程无法访问文件
- 关于android应用退出的问题
- LINUX系统编程 由REDIS的持久化机制联想到的子进程退出的相关问题
- C#执行cmd.exe 不能关闭问题
- Tomcat进程意外退出的问题分析