FCL小应用系列-----------如何利用APM实现HttpWebRequest异步发送接收

来源:互联网 发布:js用for循环写乘法表 编辑:程序博客网 时间:2024/04/29 17:27

APM(异步编程模型)在.net编程中随处可见,HttpWebRequest类也实现了APM,可供用户使用。今天做了一个小实验,总结一下。还是先看代码吧。

其实APM使用起来相当简单直观。大概步骤如下:

(1)调用HttpWebRequest.BeginXXX(AsyncCallback callback, object state)

此函数发起异步调用,并把这个代表这个异步操作的IAsyncResult对象引用自动作为callback回调函数的实参传递,state则赋值给IAsyncResult对象的AsyncState成员。

(2)在回调函数里调用HttpWebRequest.EndXXX(ir),完成响应读取。

 

在APM模型里,其实回调函数是在等待的操作完成之后由CLR自动开启新线程执行的。

另外需要注意的是,对于同一个HttpWebRequest对象,不能同时进行混合使用同步和异步方法,BeginGetRequestStream()和BeginGetResponse()必须同时使用,不能把GetRequestStream()和BeginGetResponse()混合使用。也就是说一个特定的HttpWebRequest对象,要么执行异步操作,要么执行同步操作,不能混合同步和异步函数。实际上以首先调用的函数为准,如果先调用同步函数,即使以后调用异步函数,还是会按照同步方式执行。

原创粉丝点击