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

來源:互聯網
上載者:User
application|web|快速入門 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();
%>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.