C#程序不能完全关闭的问题,后台可能还有线程之类的在运行,总之按了关闭按钮却仍在运行,请高手改一下

让程序按了关闭按钮后就能全部关闭(好像application.exit()也不好使)publicpartialclassForm1:Form{boolaSwitch=tr... 让程序按了关闭按钮后就能全部关闭(好像application.exit()也不好使)
public partial class Form1 : Form
{
bool aSwitch = true;
private StringBuilder sb = new StringBuilder();
Thread thread;
private void ReceiveData()
{
while (aSwitch)
{
UdpClient udpClient = new UdpClient(8888);
IPEndPoint remote = null;
try
{
byte[] bytes = udpClient.Receive(ref remote);
string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
sb.Append("" + DateTime.Now + ",接收自" + remote.Address.ToString() + "的消息:" + str + "\r\n");
//textBox1.Text = sb.ToString();
Action action = () => textBox1.Text = sb.ToString();
textBox1.BeginInvoke(action); //跨线程调用
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
udpClient.Close();

Thread.Sleep(20);//每20毫秒一次
}
}

public Form1()
{
InitializeComponent();
thread= new Thread(ReceiveData);
thread.Start();
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
aSwitch = false;
thread.Abort();
}
}
展开
 我来答
草薙在
2012-08-11 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6337万
展开全部
设置UdpClient.Client.ReceiveTimeout可以不让Receive方法一直等待,Timeout过后可以检查是否有个cancel属性,你程序退出以后设置这个cancel属性为true,这样UdpClient下一次轮询的时候就可以检查到这个cancel是true的话就不再监听了,直接执行线程完成。这样就可以正常退出了。否则就继续监听。
creater2012
2012-08-11 · TA获得超过156个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:154万
展开全部
为Form增加FormClosing事件,然后添加以下的几句代码,后就OK了。

比如:
private void Home_FormClosing(object sender, FormClosingEventArgs e)
{
System.Environment.Exit(System.Environment.ExitCode);
this.Dispose();
this.Close();
}

修改你的
private void Form1_FormClosing(object sender, FormClosingEventArgs e)方法就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
醉酒银虫
2012-08-11 · TA获得超过339个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:258万
展开全部
在Form1()里面thread.Start();前面加上一句。
thread.IsBackground = true;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最后的仙人
2012-08-11 · TA获得超过1961个赞
知道大有可为答主
回答量:1509
采纳率:0%
帮助的人:1405万
展开全部
Environment.Exit(Environment.ExitCode)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式