日期:2014-05-18  浏览次数:20955 次

关于UDP监控和线程阻塞的问题,请教高手
写一个UDP   C/S通讯程序,C端监控如下
private   void   ReceiveStart()//ReceiveStart通过一线程执行
{
while(!false)
{

IPEndPoint   IPEndPoint_From   =   new   IPEndPoint(IPAddress.Any,1026);
Byte[]   Byte_From   =   new   Byte[2048];
string   str_Info;
string   str_IPAddressFrom;
Byte_From   =   this.UdpClientReceive.Receive(ref   IPEndPoint_From);//Receive不到数据时候似乎会阻塞掉线程
str_Info   =   Encoding.Unicode.GetString(Byte_From);
this.textBox1.Text+=str_Info+ "\r\n ";
str_IPAddressFrom   =   IPEndPoint_From.Address.ToString();
this.ResearchInfo(str_Info,str_IPAddressFrom);
}
}

private   void   ResearchInfo(string   str_Info,string   str_IPAddressFrom)
{
if(str[0].Trim()== " <HaveNews> "&&str[1].Trim()==localIP)
{
new   frmTip().Show();
}    
}
但是在显示frmTip的时候,会出现类似假死的现象,感觉是线程被阻塞了,现在需要请教高手,如何解决此问题,让窗口顺利弹出??

------解决方案--------------------
我博客上有一个Sniffer的程序,不知对LZ有没有参考价值。
我觉得应该做成一个类,来实现这些监控功能,如果收到数据则触发出Event
然后在主程序中处理这个事件即显示数据信息。
------解决方案--------------------
up
------解决方案--------------------
用多线程