日期:2014-05-17  浏览次数:20984 次

请问c#中task为什么会自动结束了,谢谢
写了一个通信程序,client窗口打开的时候执行一个线程,定时向server发送消息
byte[] bdata = Encoding.Default.GetBytes("request");
udpclient.Send(bdata, bdata.Length, host);//往主机发送请求信息

 
主机也是在form构造函数启动一个接收线程
Task t = new Task(waitClient);
 t.Start();

void waitClient(){
 ConnServer = new UdpClient(1899);
            IPEndPoint iep = new IPEndPoint(IPAddress.Any, 1899); 
            while (true)
            {
                Thread.Sleep(100);
                byte[] bData = ConnServer.Receive(ref iep);
                string str = Encoding.Default.GetString(bData, 0, bData.Length);
                ....
             }

}



怪异的问题发生了,当我每次第一次启动server以及client,程序都能正常通信正常运行。
但过一会,每次当我关闭client程序,重启client的时候,无法怎么向server方发送消息,server都无法接收到。每次只有第一次运行的时候才能正常通信。

我debug了很久,才发现task t这个工作线程,启动的时候还在运行,过一会就没了,就是说这个t线程居然自己结束了,请问这个是怎么回事啊,如果才能让t线程一直运行(我函数中的while(true)死循环都没用?),谢谢
求教高手,这是什么原因啊,小弟查了许多都无法解决!

------解决方案--------------------
try{}
catch(Exception ex)
{
  ex.ToString() 记录日志

}
------解决方案--------------------
waitClient里加个try catch看看到底哪里出错了