我写了一个简单的UDP框架,它工作得很好。将代码包装在try / catch块中后,发送函数停止工作-没有编译器或运行时错误,当我删除try / catch语句时,发送函数再次开始工作。
我的所有其他方法,包括接收方法,似乎都不受try / catch语句的影响。考虑下面的代码:
public static AsyncCallback callback = new AsyncCallback(SendCallback);
public static void Send(string data) {
try {
byte[] bytes = Encoding.ASCII.GetBytes(data);
socket.BeginSend(bytes, bytes.Length, callback, socket);
} catch (Exception e) {
Console.WriteLine("Error: " + e.StackTrace);
Console.WriteLine("Message: " + e.Message);
}
}
public static void SendCallback(IAsyncResult ar) {
try {
socket.EndSend(ar);
} catch (Exception e) {
Console.WriteLine("Error: " + e.StackTrace);
Console.WriteLine("Message: " + e.Message);
}
}
我很好奇为什么会这样。