Orchard 源码探索(Application_Start)之异步委托调用
2014-05-28 17:36
375 查看
Orchard 源码探索(Application_Start)之异步委托调用
2014年5月26日 10:26:31 晴ASP.NET 接收到对应用程序中任何资源的第一个请求时,名为ApplicationManager 的类会创建一个应用程序域。应用程序域为全局变量提供应用程序隔离,并允许单独卸载每个应用程序。
在应用程序域中,将为名为 HostingEnvironment 的类创建一个实例,该实例提供对有关应用程序的信息(如存储该应用程序的文件夹的名称)的访问
为每个请求创建asp.net核心对象。Httpcontext ,HttpRequest, HttpResponse.
将httpapplication对象分配给请求。
Orchard just begin
其中泛型类Starter的定义如下
http://www.codeproject.com/Articles/4201/Proper-Threading-in-Winforms-NET
此函数会使所有扩展模块的初始化委托异步、队列化执行。 先用WarmupHttpModules初始化一个全局静态Action列表,来存储初始化委托,并且无论如何在稍后的异步调用中执行action。
总之,Application_Start函数主要作用就是对所有可用扩展的异步队列初始化,其中异步与队列的功能由Orchard.WarmupStarter.Starter类来完成,而可用扩展的初始化加载由IOrchardHost来完成,其中扩展包括:module,core,theme以及子站点的概念。ThreadPool.QueueUserWorkItem(...)
线程池在首次创建 ThreadPool 类的实例时被创建。线程池具有每个可用处理器 25 个线程的默认限制,这可以使用 mscoree.h 文件中定义的 CorSetMaxThreads 来更改。每个线程使用默认的堆栈大小并按照默认的优先级运行。每个进程只能具有一个操作系统线程池。ThreadPool提供的公共方法都是static方法,因此也不需要生成ThreadPool对象。通过QueueUserWorkItem方法在线程池中添加一个工作项目后,目前没有提供简单的方法取消。你不必建立咨监线程,只需要把相应的函数或方法依托WaitCallback委托传递给ThreadPool.QueueUserWorkItem()方法即可。而线程的创建、管理和运行等等都由系统自动完成,这就是ThreadPool的优点。
*eg: the different between threadpool with normal thread *
可变长数组参数
相关文章推荐
- Orchard 源码探索(Application_Start)之异步委托调用
- (二)线程--通过委托异步调用方法
- 异步调用委托的3种方法
- (二)线程--通过委托异步调用方法
- C# 委托的同步调用和异步调用
- C#委托的异步调用[学习]
- c#使用委托实现异步调用
- 邮件发送 异步委托调用-VB.Net
- 通过委托异步调用方法
- (二)线程--通过委托异步调用方法
- 委托异步调用
- 委托(delegate)的异步调用
- C# 委托的同步调用和异步调用
- .net知识和学习方法系列(十)委托异步调用方法b
- 通过委托异步调用方法
- [原创]异步调用,多线程,委托
- .net知识和学习方法系列(九)委托异步调用方法a
- 多线程(异步委托)调用和控件响应问题
- dhl:C#异步方法调用(使用委托,在委托上调用BeginInvoke方法)
- 委托的异步调用示例(1)