关于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
------解决方案--------------------用多线程