当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 实现异步请求 le="FONT-FAMILY: 宋体; mso
 

 

 ·使用.net的io(4)    »显示摘要«
    摘要:获得存储区 存储区公开数据舱中的虚文件系统。isolatedstoragefile 提供了许多与存储区进行交互的方法。要创建和检索存储区,isolatedstoragefile 提供了三种静态方法。调用 getuserstoreforassembly 或 getuserstorefordomain 分别返回按用户和程序集隔离及按用户、域和程序集隔离的存储。这两种方法检索属于代码块(是从该代码块中......
 ·使用.net的io(1)    »显示摘要«
    摘要:system.io 命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型。 以下的区别有助于澄清文件和流的差异。文件是一些具有永久存储及特定顺序的字节组成的一个有序的、具有名称的集合。因此,对于文件,人们常会想到目录路径、磁盘存储、文件和目录名等方面。相反,流提供一种向后备存储器写入字节和从后备存储器读取字节的方式,后备存储器可以为多种存储媒介之一。正如除磁盘外存在多种后备存储器一样,......


使用.NET访问Internet(2)
实现异步请求

注意 在异步回调方法中使用同步调用可能会导致严重的性能降低.通过 webrequest 及其子代实现的 internet 请求必须使用 stream.beginread 读取由 webresponse.getresponsestream 方法返回的流. 【程序编程相关:一个自定义LABEL组件的C#源代码

system.net 类使用 .net 框架的标准异步编程模型对 internet 资源进行异步访问.webrequest 类的 begingetresponse 与 endgetresponse 方法分别启动与完成对 internet 资源的异步请求. 【推荐阅读:在.net中调用存储过程的另一种方法。c

该程序定义了两个供自己使用的类:一个是 requeststate 类,它在异步调用间传递数据;另一个是 clientgetasync 类,它实现对 internet 资源的异步请求. 【扩展信息:asp.net 学习日记数据分页

下面的 c# 示例程序说明如何通过 webrequest 类使用异步调用.该示例是一个控制台程序,它从命令行获得 uri,请求此 uri 处的资源,然后在从 internet 接收数据的过程中在控制台上打印数据.

requeststate 类在服务于请求的异步方法调用间保留请求的状态.在 requeststate 类中,有包含当前资源请求与收到的响应流的 webrequest 与 stream 实例.包含当前从 internet 资源接收到的数据的缓冲区与包含整个响应的 stringbuilder 实例.当 asynccallback 方法向 webrequest.begingetresponse 注册时,requeststate 实例 (ar) 作为 state 参数传递.

clientgetasync 类实现对 internet 资源的异步请求,并将结果响应写到控制台.此类包含以下列表中描述的方法与属性.

alldone 属性包含 manualresetevent 类的一个实例,该实例发出信号表示请求已完成. main() 方法读取命令行并开始对指定 internet 资源的请求.此方法创建 webrequest 实例 wreq 与 requeststate 实例 ar,调用 begingetresponse 开始处理请求,然后调用 alldone.waitone() 方法,以使应用程序在回调完成后才退出.读取来自 internet 资源的响应后,main() 将响应写到控制台,然后应用程序结束. showusage() 方法将示例命令行写到控制台.如果命令行中没有提供 uri,main() 将调用此方法. respcallback() 方法为 internet 请求实现异步回调方法.此方法创建包含来自 internet 资源的响应的 webresponse 实例,获取响应流,然后开始从该流中异步读取数据. readcallback() 方法实现读取响应流的异步回调方法.它将从 internet 资源接收的数据传输到 requeststate 实例的 responsedata 属性中,然后对响应流启动另一个异步读取,直到不再有数据返回为止.读取完所有数据后,readcallback() 关闭响应流,并调用 alldone.set() 方法以指示 responsedata 中的响应是完整的. 注意 关闭所有网络流至关重要.如果没有将所有的请求与响应流都关闭,应用程序将用完服务器连接,而无法处理其他请求.

 

[c#]

using system;

using system.net;

using system.threading;

using system.text;

using system.io;

 

// the requeststate class passes data across async calls.


...   下一页
 ·在.net运行时了解类型信息(1)    »显示摘要«
    摘要:通过反射命名空间中的类以及 system.type,您可以获取有关已加载的程序集和在其中定义的类型(如类、接口和值类型)的信息。您也可以使用反射在运行时创建类型实例,然后调用和访问这些实例。 反射概述 公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局。 程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE