在Application中我们使用和在Session中同样的方法,使用关键字或值对来读取和写入数据。如果我们想要读取回值,我们只要简单地使用关键字就可以。由于ASP.NET是一个多线程系统,这就意味着多个线程可以同时访问Application内存。我们在使用Application时,如果想要设定值,那么就必须做到以下两点:1、明确存储在Application中的对象正在管理自己的线程处理(这里没有显示)。2、使用Application.Lock()以及Application.UnLock()执行我们的同步操作。
调用Lock()可以使ASP.NET在调用UnLock()之前阻止任何其他线程修改资源,这样就使我们的代码可以进行单独访问。不过,如果我们没有明确地调用UnLock(),ASP.NET会在应用程序完成请求、请求超时或者出现未处理错误的时候调用它。尽管有这些措施,不过通常最好写入明确调用的UnLock()的代码。
传统的ASP对象不能驻留在Application状态中,原因在于这些组件所支持的默认线程模型。实际上,访问存储在Application中组件的实例将会导致ASP对那个组件的串行访问(即一个接一个地读取请求)。而.NET组件在默认的情况下对线程是自由的,因此不存在这种线程相似性的问题。因此在Application中存储.NET对象以及通过多个请求访问该对象时,在性能上不会有什么损失。