我正在为WP7构建应用程序。而我的工作etablishing一个TCP连接在socket.connectAysnc中捕获SocketException
代码
namespace TCP
{
public class SocketEventArgsExtension : SocketAysncEventArgs
{
public EventHandler<SocketAysncEventArgs> _onConnectionCompleted;
public OnCompleted(EventHandler<SocketAysncEventArgs> handler)
{
base.completed+=handler;
_onConnectionCompleted=handler;
}
}
}
namespace TCP {
public class TCPSocket: Socket
{
public TCPSocket():base(all arguments)
public bool ConnectAsync(SocketEventArgsExtension socketArgsExtension)
{
try{
if (!base.ConnectAsync(socketArgsExtension))
{
socketArgsExtension.SocketActionIfCompletedSynchronously(socketAsyncEventArgs);
}
}catch(SocketException e)
{
this.ConnectAsync(socketArgsExtension);
}
}
}
}
namespace TCP
{
public class connection
{
public void func()
{
try
{
Socket s= new TCPSocket();
var Socketargs= new SocketEventArgsExtension() {RemoteEndPoint=_hostEntry}; //_hostEntry is DndEndPoint;
socketArgs.Oncompleted((o,e)=>Somecallback(e));
s.connectAsync(SocketArgs);
}catch(Exception e)
{
}
}
}
问题
现在我的问题是,当我喂_hostEntry与服务器地址不存在,然后尝试调试
它引发异常
System.IO.FileNotFoundException
与细节
{“文件或程序集名称 'System.Net.debug.resources,版本= 2.0.5.0,文化= EN-US,公钥= 7cec85d7bea7798e',或者一个其依赖的,没有被发现。“}
现在,当我点击继续
再次发生异常
System.Net.Sockets.SocketException发生 消息=连接尝试失败,因为连接方在一段时间后没有正确响应,或建立的连接失败,因为连接的主机未能响应 ErrorCode = 10060 StackTrace: at System.Net.Sockets.Socket.DoWSAConnectOrSendTo(SocketAsyncEventArgs args) at System。 Net.Sockets.Socket.DoWSAConnectByName(SocketAsyncEventArgs args) at System.Net.Sockets.Socket.WSAConnectByNameAsyncRequest.doRequest() at System.Net.Sockets.Socket.AsyncRequest.handleRequest() at System.Net.Sockets.Socket .SocketAsyncRequestManager.WorkerThread.doWork() at System.Net.Sockets.SocketAsocketRequestManager.WorkerThread.doWorkI(Object o) at System.Threading.ThreadPool.WorkItem.WaitCallback_Context(Object state) 在System.Threading.ExecutionContext.Run(的ExecutionContext的ExecutionContext,ContextCallback回调,对象状态) 在System.Threading.ThreadPool.WorkItem.doWork(对象O) 在System.Threading.Timer.ring()
虽然我捕获异常,它不通过catch块。相反,在对话框中提示上述异常。
在调试时,发生异常时
当按下继续按钮时,第二个异常是否会转到您的catch块? – jgauffin 2012-02-08 16:21:55
@jgauffin不,不 – rakesh 2012-02-08 21:42:01