我正在爲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