我正在将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 :(得分:0)
嗯,这不会直接回答你的问题,但如果没有人有更好的解决方案,你可以创建自己的主题并执行Connect
而不是BeginConnect
。然后,您应该能够捕获异常。
答案 1 :(得分:0)