HttpServer与异步编程

HttpRequest事件中的e参数有两个方法,WriteString和WriteFile,分别用于向客户端发送文件文本和文件,这两个方法本身就是异步执行的,通常不会影响负载能力。

但HttpRequest事件中的代码是在主线程中同步执行的,如果要这里进行一些负荷较重的计算,例如数据的统计查询,复杂网页的生成,将客户上传的文件存储在本地等等,而且用户量比较大,那么就可以考虑异步编程了。

我们并不能简单地将HttpRequest事件中的代码转移到自定义函数中,然后在HttpRequest事件中用异步方式调用此函数就完事,因为默认主线程执行完毕, 系统就会关闭和客户端的信道,客户端不会显示任何内容,同时因为信道已经关闭,异步函数向客户端发送信息的时候会出错。

所以HttpRequest事件采用异步编程,首先要通知系统,我将采用异步编程,主线程完成之后不能关闭信道 ,最后要在异步函数运行结束后通知系统关闭信道。

HttpRequest事件代码结构为:

e.AsyncExecute = True  '通知系统,将采用异步方式生成网页
Functions
.AsyncExecute("函数名", e) '异步调用函数生成网页

异步函数代码结构为:

Dim e As RequestEventArgs = args(0)
'生成网页
'...
'发送网页

e
.Handled = True '通知系统异步函数执行完毕,可以关闭信道

接下来我们会用两个例子演示HttpServer异步编程。

 

 

 

 


本页地址:http://www.foxtable.com/mobilehelp/topics/278.htm