异步TCP编程

异步TCP编程

  • 异步操作一般在单独的线程中执行
  • 异步设计模式:基于事件的异步设计模式、基于IASyncResult的异步设计模式;

1,基于IASyncResult的设计模式:

基本原理:

通过前缀为Begin和End的两个方法实现开始和结束异步操作。异步操作完成后,会返回一个实现IASyncResult接口的对象,该对象存储了有关异步操作的信息,包括:

  • AsyncState:包含异步操作需要的状态信息,如不需要可设置为null;
  • AsyncWaitHandle
  • CompleteSynchronously:
  • IsComplete:指示异步操作是否已经完成。
AsyncCallback委托:

AsyncCallback委托实现了保证异步操作完成时能够及时通知调用者这一机制。

2,异步方式调用同步方法:

用异步方式调用同步方法需要声明一个与要调用的方法具有相同签名的委托:

  • 关键代码:
    private BinaryWriter bw;
    private delegate void SendMessageDelegate(string sendMessage);
    private SendMessageDelegate sendMessageDelegeate;
    sendMessageDelegate=new SendMessageDelegate(AsyncSndMsg);
    private void AsyncSndMsg(string sendMessage)
        {
            try
            {
                ...
                bw.Write(sendMessage);
                bw.Flush();//清空缓存
                ...
            }
            catch
            {
                ...
            }
        }

最后通过轮询方式检查异步调用是否完成:

private Bool needExit;
IAsyncResult result=sendMessageDelegate.BeginInvoke(sendMessage,null,null);
While(result.Iscomplete==true)
{
    if(needExit)
    {
        break;
    }
    Thread.Sleep(30);
}

20150311

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值