我在一个函数中用异步请求连接
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函数中,网络不通,服务端没开启,就出现异常,我无法捕获,因为不在同一线程上吧。
我怎么处理呢?这个发起连接的函数被封装成类库了,我就是想抛出这个异常,被调用的应用程序捕获,不知该怎么做?
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函数中,网络不通,服务端没开启,就出现异常,我无法捕获,因为不在同一线程上吧。
我怎么处理呢?这个发起连接的函数被封装成类库了,我就是想抛出这个异常,被调用的应用程序捕获,不知该怎么做?
解决方案 »
- c#如何调用c++写的DLL中的导出类
- 用Dreamweaver 的正则表达式
- 如何编程监测电脑上是否安装了Firefox,并提取Firefox的版本号?
- 有关调用实时(JIT)调试而不是此对话框的详细信息 着急解决
- 请教:vs2005中怎样使用数据报表?
- 马上给分!
- Dataset.Merge(ds);出了问题,"<target>.CommentTime 和 <source>.CommentTime 的属性冲突: DataType 属性不匹配。"
- devexpress xtragrid一个列名称有空格问题
- 请问如何获取客户机的IP...???立马散分!!!
- C#中,可以自定义消息吗?
- 请教如何使用C#做出Dos中的dir命令,实现dir功能与"dir /s"功能
- WindowPro获得拖动滚动条的时候,如何正确取得滚动条位置。
你这边的线程根本没动,不会出异常。要获取的话 得在那个EndConnect(...)的外面进行捕捉,那个函数调用的他 就捉那个
{
try
{
TcpClient client = (TcpClient)ar.AsyncState;
client.EndConnect(ar);
}
catch (Exception ex)
{
throw new Exception("创建Client连接异常\n" + ex.Message);
}
finally
{
connectDone.Set();
}
}