我在一个函数中用异步请求连接
              try
            {
                connectDone.Reset();
                client.BeginConnect(ipAddress, port, new AsyncCallback(GetClientConnCallBack), client);
                connectDone.WaitOne();
                conn = new Connection(client);
                this.connections.Enqueue(conn);
                this.StartSendingListening();
                return conn;
            }
            catch (Exception ex)
            {
                throw new Exception(string.Format("Client:\n{0}", ex.Message));
            }
但是如果在GetClientConnCallBack函数中,网络不通,服务端没开启,就出现异常,我无法捕获,因为不在同一线程上吧。
我怎么处理呢?这个发起连接的函数被封装成类库了,我就是想抛出这个异常,被调用的应用程序捕获,不知该怎么做?

解决方案 »

  1.   

    那边EndConnect如果不把你的ConnectDone.Set()的话,
    你这边的线程根本没动,不会出异常。要获取的话  得在那个EndConnect(...)的外面进行捕捉,那个函数调用的他 就捉那个
      

  2.   

    private void GetClientConnCallBack(IAsyncResult ar)
            {
                try
                {
                    TcpClient client = (TcpClient)ar.AsyncState;
                    client.EndConnect(ar);
                }
                catch (Exception ex)
                {
                    throw new Exception("创建Client连接异常\n" + ex.Message);
                }
                finally
                {
                    connectDone.Set();
                }
            }
      

  3.   

    问题是在应用程序中捕获不到GetClientConnCallBack这里的异常,不知道该怎么处理
      

  4.   

    再顶下,有人知道吗?这个dll的报错,应用程序中捕获不到,无法处理,程序崩溃呀