程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET之ASP Web Application快速入門(2)

.NET之ASP Web Application快速入門(2)

編輯:關於.NET
.Net之ASP Web Application快速入門(2) 
Application的生存期


一個ASP.NET application創建於服務器第一次被請求時,在那之前不會有ASP.Net代碼在執行。接受第一次請求後,一個HttpApplication實例池被創建,並激活了Application_OnStart事件。HttpApplication實例處理這個請求及隨後發生的請求,直到最後的實例退出,接著就觸發Application_OnEnd事件。

注意,在每一個實例中HttpApplication的Init以及Dispose方法都被調用,因此在Application_OnStart 和 Application_OnEnd事件間將被調用多次。在一個ASP.Net
application中,只有這些事件在所有HttpApplication實例中被共享。

關於多線程


如果我們以application范圍類型使用對象,我們就應該注意ASP.Net是並發處理請求的,從而Application對象可以被多個線程所訪問。因此,如果下面例子中的代碼在同一時間被不同的客戶機訪問,它就是危險的,可能不會達到預期目的。為對照方便,我們列出了使用VB、C#以及JScript三種語言編寫的代碼:

C#


<%
Application["counter"] = (Int32)Application["counter"] + 1;
%>

VB

<%
Application("counter") = CType(Application("counter") + 1, Int32)
%>

JScript

<%
Application("counter") = Int32(Application("counter") + 1);
%>


為了實現安全的線程處理,我們可以通過Lock和Unlock方法處理這個Application對象。請看下面使用VB、C#以及JScript三種語言編寫的代碼:


C#


<%
Application.Lock();
Application["counter"] = (Int32)Application["counter"] + 1;
Application.UnLock();
%>

VB

<%
Application.Lock()
Application("counter") = CType(Application("counter") + 1, Int32)
Application.UnLock()
%>

JScript

<%
Application.Lock();
Application("counter") = Int32(Application("counter") + 1);
Application.UnLock();
%>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved