如何捕获事件引发的异常?

时间:2011-04-15 15:44:43

标签: silverlight sockets asynchronous tcpclient

我正在将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
}

由于它是从事件抛出的事实,因此不会在此处捕获异常?或者也许是因为事件是在另一个线程上执行的?我不确定。在任何情况下都不会发现异常。

2 个答案:

答案 0 :(得分:0)

嗯,这不会直接回答你的问题,但如果没有人有更好的解决方案,你可以创建自己的主题并执行Connect而不是BeginConnect。然后,您应该能够捕获异常。

答案 1 :(得分:0)