请大侠帮我看看这个异常的问题 搞了很久 就到关键地步了 在线等
using System;
using System.ComponentModel;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
IPEndPoint server = null;
UdpClient uc = null;
public Form1()
{
InitializeComponent();
}
Thread thread1 = null;
private void Form1_Load(object sender, EventArgs e)
{
try
{
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 1000);
IPAddress address = IPAddress.Parse("127.0.0.1");
byte[] a=new byte[]{1,11};
uc = new UdpClient();
server = new IPEndPoint(address, 1000);
uc.Send(a,a.Length,server);
thread1 = new Thread(jieshou);
thread1.Start();
}
catch
{
MessageBox.Show("sdf");
}
}
public void jieshou()
{
while (true)
{
try
{
byte[] Data = uc.Receive(ref server); //将获取的远程消息转换成二进制
//throw new Exception("sdf");
}
catch
{ MessageBox.Show("d"); }
}
}
}
}
问题是当执行到 byte[] Data = uc.Receive(ref server);的时候会出现异常,然后抛出之后循环就停止了。当注释掉 byte[] Data = uc.Receive(ref server);
改成 try
{
//byte[] Data = uc.Receive(ref server); //将获取的远程消息转换成二进制
throw new Exception("sdf");
}
后就会不断的循环抛出,不会停止,为什么第一种执行一次就停止 第二种怎么异常都不停止呢?
------解决方案--------------------你怎么发了两个贴问这个。那我贴过来吧。
与这个语句有关 byte[] Data = uc.Receive(ref server);
这个语句第一次执行时,抛出了异常,或许也清空了缓冲区,下一次执行时因为没有数据,所以也没有再抛出异常
------解决方案--------------------另外,注意身体,深更半夜的也多少人回答问题
------解决方案--------------------建议你在byte[] Data = uc.Receive(ref server); 语句处设断点,跟踪进去,看看到底运行到哪里出现的异常
------解决方案--------------------这个语句第一次执行时,抛出了异常,或许也清空了缓冲区,下一次执行时因为没有数据,所以也没有再抛出异常
对于这句的理解,我还是不懂,我这个程序的作用是发送一个消息给自己,然后用那个异常进行监听消息,如果那个异常执行一次就停止的话,那就是说这样监听不了,所以我必须明白为什么它会执行一次异常就停止了,还有 要怎样情况下才会不异常 另外谢谢你的关心
------解决方案--------------------How about make a job-managerment. catch exception and re-start the thread?