菜鸟创建了一个线程,但结果程序退不出去了,在windows进程里总是有我这个程序,怎么办啊?? Thread thread=new Thread (new ThreadStart(gc));thread.IsBackground = true; thread.Start(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的子线程没有关闭在主窗体关闭事件中加入:thread.Abort(); UdpB.Receive是一个阻塞函数,所以你退出时候先UdpB.Close(); Abort()方法只是引发线程的一个exception,有时不能终止线程,我建议,使用Command变量:private bool _bCommandprivate void button1_Click(object sender, System.EventArgs e){ Thread thread=new Thread (new ThreadStart(gc)); _bCommand=true; thread.Start();}public void gc(){ UdpClient UdpB=new UdpClient(8888); IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5); while(_bCommand) { byte[] receiveBytes=UdpB.Receive(ref RemoteIpEndPoint); string receiveMessage=Encoding.ASCII.GetString(receiveBytes); richTextBox1.AppendText("<-A "+DateTime.Now+":\r\n"+receiveMessage+"\r\n"); }}如果要停止线程,就_bCommand=false 因为UdpB是阻塞的,所以设置标志是没有用的。一个办法是你用特定的数据串表示退出。然后你在退出时发出一个包。然后修改:public void gc(){ UdpClient UdpB=new UdpClient(8888); IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5); while(_bCommand) { byte[] receiveBytes=UdpB.Receive(ref RemoteIpEndPoint); string receiveMessage=Encoding.ASCII.GetString(receiveBytes); if (CheckExit(receiveMessage) == true) break; richTextBox1.AppendText("<-A "+DateTime.Now+":\r\n"+receiveMessage+"\r\n"); }} 这个基类、派生类、析构函数考试题!急,跪求呀!!!! C#窗体应用 C# 第三方exe权限限制问题 望老鸟指点 高手们进来看看 hyblusea领分吧 新手:C#中如何写一个自定义的函数 ((DataRowView)Container.DataItem)是什么意思? 给对象的多个类似属性赋值 if语句的问题 请教:C# 中dll引用的问题. 请高手指点!下载页面怎么消除???点击下载总出现空页面,怎么办?附源码!!急等!!! C#和别的C有什么区别?
thread.Abort();
private bool _bCommand
private void button1_Click(object sender, System.EventArgs e)
{
Thread thread=new Thread (new ThreadStart(gc));
_bCommand=true;
thread.Start();
}public void gc()
{
UdpClient UdpB=new UdpClient(8888);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5);
while(_bCommand)
{
byte[] receiveBytes=UdpB.Receive(ref RemoteIpEndPoint);
string receiveMessage=Encoding.ASCII.GetString(receiveBytes);
richTextBox1.AppendText("<-A "+DateTime.Now+":\r\n"+receiveMessage+"\r\n");
}
}如果要停止线程,就_bCommand=false
一个办法是你用特定的数据串表示退出。然后你在退出时发出一个包。然后修改:
public void gc()
{
UdpClient UdpB=new UdpClient(8888);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5);
while(_bCommand)
{
byte[] receiveBytes=UdpB.Receive(ref RemoteIpEndPoint);
string receiveMessage=Encoding.ASCII.GetString(receiveBytes); if (CheckExit(receiveMessage) == true) break;
richTextBox1.AppendText("<-A "+DateTime.Now+":\r\n"+receiveMessage+"\r\n");
}
}