2011-04-15 88 views
0

我正在將TCPClient移植到Silverlight中,我發現BeginConnect可能會以某種方式從異步過程中拋出SocketException。
在silverlight中,ConnectAsync函數有一個Completed事件,它在SocketAsyncEventArgs參數中提供了一個SocketError。
每當套接字無法從TCPClient掛鉤到Completed事件的方法連接時,我拋出一個新的SocketException。
問題奠定了這裏:如何捕獲事件引發的異常?

try 
{ 
    var ar = client.BeginConnect(...); 
    // Do stuff 
    client.EndConnect(ar); 

} 
catch(SocketException e) 
{ 
    // Handle exception here 
} 

的異常不會被逮住這裏,由於事實,即它是由一個事件拋出?或者,也許是因爲事件在另一個線程上執行?我不確定。在任何情況下,這個例外都不會被捕獲。

回答

0

嗯,這並不直接回答你的問題,但如果沒有人有更好的解決方案,你可以創建自己的線程並執行Connect而不是BeginConnect。然後,你應該能夠發現異常。

+0

是的,但是這不是這裏的想法:) – 2011-04-15 20:18:54