终止线程

bainiao8 2007-06-05 10:21:53
private void Form1_Load(object sender, EventArgs e)
{
ThreadListener = new Thread(new ThreadStart(UdpListen));
ThreadListener.Start();//1
}
private void button2_Click(object sender, EventArgs e)
{
if (ThreadListener != null)
if (ThreadListener.IsAlive)
ThreadListener.Abort();//2
}
我按button2的时候,线程ThreadListener没有终止.当我再发送数据的时候,他提示我线程正在终止.然后才终止线程.
当我把//2放到//1的后面的时候.就能直接终止线程!这是怎么会事?
...全文
205 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shrinerain 2007-06-05
  • 打赏
  • 举报
回复
.Abort() will not terminate the thread immediately. Refer to MSDN.

If you want kill the thread ,try Win32 API TerminateThread(), but it is not recommend.
bainiao8 2007-06-05
  • 打赏
  • 举报
回复
shilei831115(柔石)帮忙说说,怎样解决这个问题?socket确实不太明白.刚接触这方面..
bainiao8 2007-06-05
  • 打赏
  • 举报
回复
不是的.
private void button2_Click(object sender, EventArgs e)
{
if (ThreadListener != null)
if (ThreadListener.IsAlive)
{
ThreadListener.Abort();
MessageBox.Show("alive");
}
else
MessageBox.Show("closed");
}
无论我按几次button2,他都提示alive.只有我再次发送数据的时候,再按button2才提示正在终止线程然,后提示closed.
shilei831115 2007-06-05
  • 打赏
  • 举报
回复
socket的基本还不懂啊 没有用过阿
Jinwmmail 2007-06-05
  • 打赏
  • 举报
回复
终此线程本就有时间延迟.
bainiao8 2007-06-05
  • 打赏
  • 举报
回复
private void UdpListen()
{
UdpClient listener = new UdpClient(11000);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 11000);
while (1 == 1)
{
try
{
byte[] bytes = listener.Receive(ref groupEP);
Console.WriteLine(Encoding.ASCII.GetString(bytes, 0, bytes.Length));
str = Encoding.ASCII.GetString(bytes, 0, bytes.Length);
ltjl.AppendText(str+"\n");
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
hazrael 2007-06-05
  • 打赏
  • 举报
回复
就这小段代码看不出来。把UdpListen函数体贴出来吧

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧