Я портирую TCPClient в Silverlight и вижу, что BeginConnect может как-то вызвать исключение SocketException из асинхронного процесса.
В silverlight есть событие Completed для функции ConnectAsync, которая предоставляет SocketError в свой параметр SocketAsyncEventArgs.
Я выбрасываю новое исключение SocketException всякий раз, когда сокету не удается подключиться из метода, который моя реализация TCPClient подключила к событию Completed.
Проблема лежит здесь:
try
{
var ar = client.BeginConnect(...);
// Do stuff
client.EndConnect(ar);
}
catch(SocketException e)
{
// Handle exception here
}
Исключение не будет поймано здесь из-за того, что оно выброшено из события? Или, может быть, это потому, что событие выполняется в другом потоке? Я не уверен. В любом случае исключение не поймано.