我正在將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
}
的異常不會被逮住這裏,由於事實,即它是由一個事件拋出?或者,也許是因爲事件在另一個線程上執行?我不確定。在任何情況下,這個例外都不會被捕獲。
是的,但是這不是這裏的想法:) – 2011-04-15 20:18:54