<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      .NET之ASP WebApplication迅速基礎(2)

      [摘要].NET之ASP Web Application快速入門(2)  Application的生存期一個ASP.NET application創建于服務器第一次被請求時,在那之前不會有ASP.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();
      %>





      日韩精品一区二区三区高清