Count

Integer = Application.Count

 
 

Application コレクションに現在格納されている項目の数を保持する整数を返します。HttpApplicationState クラスによって実装されている Count メンバーは、ICollection インターフェイスから派生しています。

 
パラメータ
 
  • Integer
      Count プロパティの値を受け取る整数変数です。
 

次の例では、Application コレクションに 2 つの値を追加し、Application コレクションの項目数を表示します。次に、Count プロパティをループ制御値として使用し、各項目を表示します。

 
Sub Page_Load(  )
   Application.Clear(  )
   Application("foo") = "Hello, "
   Application("bar") = "World!"
   Message.Text = "The Application collection contains " & _
      Application.Count & " items: "
      Dim I as Integer
      For I = 0 To Application.Count - 1
         Message.Text &= Application(I)
      Next
End Sub
 
メモ

Count プロパティは ASP.NET で新たに導入されました。Count プロパティでは、Application コレクションをループする以外に、特定の時点において Application コレクションに格納されている項目の数を追跡することができます。たとえば、後で参照するためにその項目数をログに記録できます。

 
Item

Object = Application.Item(ByVal name As String)
Application.Item(ByVal name As String) = Object
Object = Application.Item(ByVal index As Integer)
Application.Item(ByVal index As Integer) = Object

 
 

特定の名前またはインデックスに関連付けられているオブジェクトを返すか、または設定します。

 
パラメータ
 
  • Object
      項目の値を受け取るか設定する変数です。.NET のすべてのタイプは最終的に Object から派生しているので、任意のタイプを指定できます。
  • name
      項目に割り当てる、または項目の取得に使用するテキストキーを保持する文字列パラメータです。
  • index
      値を取得または変更する項目のインデックスを保持する整数パラメータです。
 

次の例では、Application コレクションの 2 つの項目の値を設定します。これらの項目がコレクションに存在しない場合は追加されます。次に、2 つの値が表示されます。

 
Sub Page_Load(  )
   Application.Clear(  )
   Application.Item("foo") = "foo"
   Application.Item("foo2") = "foo2"
   Message.Text = Application.Item("foo") & "<br/>"
   Message.Text &= Application.Item(1)
End Sub
 
メモ

次の構文を使用すると、黙示的に Item プロパティにアクセスします。

 
Application("foo") = "foo"
 

この構文は、従来の ASP コードでよく使用されています。Item プロパティは明示的に参照する必要はありません。ただし、黙示的にアクセスするよりも明記した方がコードが読みやすく、理解しやすいものになります。

 

インデックスを使用できるのは、値を変更するときのパラメータとして使用する場合に限ります。新しい項目の作成には使用できません。また、インデックスは、Application コレクションの項目数を超えてはいけません。項目数を超えるインデックスに対しては、例外が発生します。

 
AllKeys

Dim StateVars(Application.Count) As String
StateVars = Application.AllKeys

 
 

HttpApplicationState オブジェクトに格納されているキー名の文字列配列を返します。

 
パラメータ
 
  • StateVars
      キー名の配列を受け取る String タイプの配列の変数です。
 

次の例では、Application オブジェクトに格納されているデータのすべてのキーを表示します。

 
Sub Page_Load(  )
   Dim I as Integer
   Dim StateVars(Application.Count - 1) As String
   StateVars = Application.AllKeys
   For I = 0 to StateVars.Length - 1
      Message.Text = Message.Text + StateVars(I) + "<br/>"
   Next I
End Sub 
 
メモ

このプロパティからは、現在のすべての Application 変数に割り当てられているキー名の一覧が返されます。

 
Contents

HttpApplicationState = Application.Contents

 
 

現在の HttpApplicationState インスタンスへの参照を返します。

 
パラメータ
 
  • HttpApplicationState
      Contents 参照を受け取る HttpApplicaitonState タイプの変数です。
 

次の例では、Contents コレクション参照から RemoveAll メソッドを呼び出し、メッセージを書き込みます。

 
Sub Page_Load(  )
Application.Contents.RemoveAll(  )
Message.Text = "Removed all items from current Application."
End Sub
 
メモ

このプロパティは、従来の ASP との下位互換性を保つために提供されています。従来の ASP では、Item プロパティなどのプロパティ、Remove メソッドや RemoveAll メソッドなどのメソッドには Contents プロパティからアクセスします。新しく開発された ASP.NET では、これらのメンバーに直接アクセスする必要があります。たとえば、Contents プロパティを経由して RemoveAll メソッドを呼び出すのではなく、直接 RemoveAll メソッドを呼び出すことができます。

 
Application.RemoveAll(  )
 
Keys

KeysCollection = Application.Keys

 
 

Application コレクションに格納されているすべての値に関連付けられている文字列キーを保持する NameObjectCollectionBase.KeysCollection を返します。

 
パラメータ
 
  • KeysCollection
      Keys プロパティの値を受け取る NameObjectCollectionBase.KeysCollection タイプの変数です。
 

次の例では、Application コレクションのキーのコレクション全体をループし、キー名とキー名に関連付けられている値を表示します。表示には Message コントロールの Text プロパティを使用します。

 
Sub Page_Load(  )
   Dim Key As String
   Message.Text = "Application Keys:"
   For Each Key in Application.Keys
      Message.Text &= "<br/>Key:& ;& ;& ;" & Key
      Message.Text &= "<br/>Value:& ;& ;& ;" & Application(Key)
   Next
End Sub
 
メモ

Application コレクションのコンテンツに繰り返し処理を実行する方法は多数ありますが、その 1 つが Keys プロパティを使用する方法です。

 
StaticObjects

HttpStaticObjectsCollection = Application.StaticObjects

 
 

scope 属性が Application に設定された <object runat="server"> 構文を使用して "global.asax" でインスタンス化されているすべてのオブジェクトを保持する HttpStaticObjectsCollection を返します。

 
パラメータ
 
  • HttpStaticObjectsCollection
      StaticObjects プロパティの値を受け取る HttpStaticObjectsCollection タイプの変数です。
 

次の例では、HttpStaticObjectsCollection クラスの Count プロパティを使用して、"global.asax" の <object scope="Application" runat="server"/> 構文で宣言されているオブジェクトのうち、現在のアプリケーションに存在するオブジェクト数を表示します。次に、それぞれのオブジェクトのタイプを調べ、Web TextBox コントロールがあれば現在のページの Controls コレクションに追加します。

 
Sub Page_Load(  )
   Message.Text = "There are " & Application.StaticObjects.Count & _
      " objects declared with the " & _
      "&lt;object runat=&quot;server&quot;&gt; syntax " & _
      "in Application scope."
   Dim myobj As Object
   For Each myObj in Application.StaticObjects
      If myObj.Value.GetType.ToString(  ) = _
         "System.Web.UI.WebControls.TextBox" Then
         Page.Controls.Add(myObj.Value)
      End If
   Next
End Sub
 
メモ

このプロパティは、従来の ASP との下位互換性を保つために提供されています。オブジェクトのスコープをセッションまたはアプリケーションに設定すると、リソースの使用率やアプリケーションのスケーラビリティに影響を及ぼすので、インスタンス化の前には十分な検討が必要です。基本的には、オブジェクトをページスコープに限定することをお勧めします。

 

コレクション内の各オブジェクトは DictionaryEntry 構造で表現されるので、キーおよび値に直接アクセスすることはできません。キーおよび値にアクセスするには、DictionaryEntry 構造の Key メンバーおよび Value メンバーを使用します。

 
Add

Application.Add(ByVal name As String, ByVal value As Object)

 
 

Application コレクションに値を追加します。

 
パラメータ
 
  • Name
      Application コレクションに追加する項目の名前を指定する String タイプの変数です。
  • Value
      Application コレクションに追加する項目の値を保持する Object タイプの変数です。
 

次の例では、項目を Application コレクションに追加して、表示します。

 
Sub Page_Load(  )
   Application.Add("Added", "AddedValue")
   Message.Text = Application("Added")
End Sub
 
メモ

Add メソッドは ASP.NET で新しく導入されました。このメソッドで Application コレクションに項目を追加する技法は、他の .NET コレクションに項目を追加するときに使用される技法と一貫しています。また、インデックスのキー名を使用して Application オブジェクトを直接指定する、従来の ASP の構文も正常に機能します。

 
Clear

Application.Clear( )

 
 

Application コレクションのコンテンツをクリアします。

 
パラメータ

なし

 

次の例では、Application コレクションのコンテンツをクリアし、Message コントロールの Text プロパティにメッセージを書き込みます。このメッセージに含まれるコレクションの現在のカウンターは 0 になります。

 
Sub Page_Load(  )
   Application.Clear(  )
   Message.Text = "There are " & Application.Count & _
      " items in the Application collection."
End Sub
 
メモ

Clear メソッドは ASP.NET で新しく導入されました。このメソッドは Application コレクション自体のコンテンツのみをクリアします。StaticObjects コレクションのコンテンツはクリアしません。

 
Get

Application.Get(ByVal name As String)
Application.Get(ByVal Index As Integer)

 
 

Application コレクションの要素を、名前またはコレクション内での順序 (インデックス) のいずれかによって取得します。一般的には、ループ内でコレクションのメンバーを取得する必要がない限り、Get への呼び出しでは名前を使用します。

 
パラメータ
 
  • name
      Application コレクションから取得する項目の名前を指定する String タイプの変数です。
  • Index
      Application コレクションから取得する項目のインデックスを指定する Integer タイプの変数です。
 

次の例では、Application コレクションの値を設定して取得します。また、Get メソッドを使用して、Message コントロールの Text プロパティにメッセージを書き込みます。このメッセージには、Application コレクションに新しく追加された要素の現在の値が含まれます。

 
Sub Page_Load(  )
   Application("GetTest") = "Got it!"
   Message.Text = "GetTest = " & Application.Get("GetTest")
End Sub
 
メモ

次のコードに示すように、値が null でないことを確認することで、名前付き値が Application コレクションに保存されているかどうかを調べることができます。

 
If Not Application("Foo") is Nothing then
   Message.Text = "Foo is set to " & Application.Get("Foo")
End If
 
GetKey

Application.GetKey(ByVal Index As Integer)

 
 

Application オブジェクトに格納されているデータ項目のインデックスに対応するキー名を取得します。

 
パラメータ
 
  • Index
      Application コレクションから取得するキーのインデックスを指定する Integer タイプの変数です。
 

次の例では、既知の状態に戻すために Application コレクションからすべての値を削除します。次に、Application コレクションに値を 1 つ書き込みます。最後に、GetKey を呼び出して取得した最初の要素 (インデックス 0) のキーを Message コントロールに格納します。

 
Sub Page_Load(  )
   Application.RemoveAll(  )
   Application("GetKeyTest") = "Got it!"
   Message.Text = "Key of Application(0) = " & _
                   Application.GetKey(0) & _
                   "<br/>(Should be GetKeyTest)"
End Sub
 
メモ

Index が 0 未満、または Application.Count 以上の場合、ArgumentOutOfRangeException 例外が発生します。

 
Lock

Application.Lock

 
 

アクセスを同期するため、Application コレクションへのアクセスをロックします。

 
パラメータ

なし

 

次の例では、アプリケーションをロックして、アプリケーションページのロードカウンタ変数を設定します。次に、アプリケーションのロックを解除し、値を表示します。

 
Sub Page_Load(  )
   Application.Lock(  )
   Application("Counter") = Application("Counter") + 1
   Application.UnLock(  )
   Message.Text = "Counter = " & Application("Counter")
End Sub
 
メモ

上の例では、アプリケーションをロックし、Application コレクション内部の値を変更する操作を実行して、アプリケーションのロックをできるだけ早く解除します。Lock および UnLock メソッドの呼び出しの外部では、Application コレクションの読み取りアクセスを安全に行うことができます。

 
Remove

Application.Remove(ByVal name As String)

 
 

Application コレクションから、名前で指定した項目を削除します。

 
パラメータ
 
  • name
      削除する項目の名前またはキーを保持する文字列パラメータです。
 

次の例では、キー "foo" が付いた項目が Application コレクションに存在するかどうかを判断し、存在が確認された場合は項目を削除して適切なメッセージを表示します。

 
Sub Page_Load(  )
   If Not Application("foo") Is Nothing Then
      Application.Remove("foo")
      Message.Text = "Item 'foo' was removed."
   Else
      Message.Text = "Item 'foo' does not exist."
   End If
End Sub
 
メモ

Remove メソッドは、従来の ASP との下位互換性を保つために提供されています。従来の ASP では、Contents コレクションを経由してこのメソッドにアクセスしました。既に説明したように、ASP.NET では、このメソッドに直接アクセスするか、または Contents コレクション経由でアクセスできます。

 
RemoveAll

Application.RemoveAll( )

 
 

Application コレクションからすべての項目を削除します。

 
パラメータ

なし

 

次の例では、Application コレクションにおける項目の有無を調べ、存在が確認された場合は RemoveAll メソッドを呼び出してコレクションをクリアします。

 
Sub Page_Load(  )
   If Application.Count > 0 Then
      Application.RemoveAll(  )
      Message.Text = "Application collection cleared."
   Else
      Message.Text = "Application collection is already empty."
   End If
End Sub
 
メモ

RemoveAll メソッドは、従来の ASP との下位互換性を保つために提供されています。従来の ASP では、Contents コレクションを経由してこのメソッドにアクセスしました。既に説明したように、ASP.NET では、このメソッドに直接アクセスするか、または Contents コレクション経由でアクセスできます。

 
RemoveAt

Application.RemoveAt(ByVal index As Integer)

 
 

Application コレクションから、インデックスで指定した項目を削除します。新たに導入されたこのメソッドは、キーで項目を削除する Remove メソッドと対になります。

 
パラメータ
 
  • index
      Application コレクションから削除する項目のインデックス位置を保持する整数パラメータです。
 
Sub Page_Load(  )
   If Application.Count > 0 Then
      Application.RemoveAt(0)
      Message.Text = "The item at index 0 was removed."
   Else
      Message.Text = "The item at index 0 does not exist."
   End If
End Sub
 
メモ

RemoveAt メソッドを使用すると、キーではなくインデックスを使用して Application コレクションの項目を削除できます。上の例で示したように、項目を削除すると、削除された項目の後の項目の位置がコレクション内で 1 つ移動します。インデックスを使用して項目を削除した後で、同じインデックスに対して RemoveAt をもう一度呼び出すと、最初に削除した項目のすぐ次の項目が削除されます。Application コレクションにある項目が 1 つだけの場合に RemoveAt を再度呼び出すと、ArgumentOutOfRangeException 例外が発生します。

 
Set

Application.Set(ByVal name As String, ByVal value As Object)

 
 

Application コレクションのオブジェクトの値を更新します。この新しいメソッドにより、Application コレクションにオブジェクトを設定できるようになりました。

 
パラメータ
 
  • Name
      Application コレクションにある更新対象のオブジェクトの名前を保持する文字列パラメータです。
  • Value
      Application コレクションにある更新対象のオブジェクトの新しい値を保持するオブジェクトパラメータです。
 

次の例では、Application コレクションに新しい項目を設定するときと、その値を変更するときの計 2 回 Set を使用します。

 
Sub Page_Load(  )
   Application.RemoveAll(  )
   Application.Set("TotallyNewVariable","Test!")
   Message.Text = "First: " + Application("TotallyNewVariable") + "<br/>"
   Application.Set("TotallyNewVariable","Test again!")
   Message.Text = Message.Text & "First after Set: " +
   Application("TotallyNewVariable") + "<br/>"
End Sub
 
メモ

Set を使用して Application コレクションに値を追加することもできますが、通常は従来の ASP から使い慣れている単純な構文を使用します。

 
Application("TotallyNewVariable") = "Test!"
 
UnLock

Application.UnLock

 
 

アクセスを同期するため、Application コレクションへのアクセスのロックを解除します。

 
パラメータ

なし

 

次の例では、アプリケーションをロックして、アプリケーションページのロードカウンタ変数を設定します。次に、アプリケーションのロックを解除し、値を表示します。

 
Sub Page_Load(  )
   Application.Lock(  )
   Application("Counter") = Application("Counter") + 1
   Application.UnLock(  )
   Message.Text = "Counter = " & Application("Counter")
End Sub
 
メモ

上の例では、アプリケーションをロックし、Application コレクション内部の値を変更する操作を実行して、アプリケーションのロックをできるだけ早く解除します。Lock および UnLock メソッドの呼び出しの外部では、Application コレクションの読み取りアクセスを安全に行うことができます。

 
Start

Sub Application_OnStart( ) 'イベントハンドラーのロジック
End Sub

 
 

Application が作成されたときに発生します。このイベントのイベントハンドラーは、"global.asax" アプリケーションファイルで定義する必要があります。

 
パラメータ

なし

 

次の例では、アプリケーションイベントログとアプリケーション用 IIS ログの両方に、start イベントが発生したことを示すエントリを書き込みます。

 
<Script language="VB" runat="server">
   Sub Application_OnStart(  )
      Dim EventLog1 As New System.Diagnostics.EventLog ("Application", _
         ".", "mySource")
      EventLog1.WriteEntry("Application_OnStart fired!")
      Context.Response.AppendToLog("Application_OnStart fired!")
   End Sub
</script>
 

上のコードには 1 つ問題点があります。.NET Framework の新しいバージョンではセキュリティが強化されているため、ASP.NET アプリケーションではデフォルトでイベントログへの書き込みができません。

 
メモ

アプリケーションを初期化するときは、初期化作業に start イベントを使うと便利です。ほとんどが静的な Application 変数を初期化できます。

 
End

Sub Application_OnEnd( ) 'イベントハンドラーのロジック
End Sub

 
 

Web サーバーが停止するか "global.asax" ファイルが変更されて、アプリケーションが破損したときに発生します。このイベントのイベントハンドラーは、"global.asax" アプリケーションファイルで定義する必要があります。

 
パラメータ

なし

 

次の例では、アプリケーションイベントログに、end イベントが発生したことを示すエントリを書き込みます。

 
<Script language="VB" runat="server">
   Sub Application_OnEnd(  )
      Dim EventLog1 As New System.Diagnostics.EventLog ("Application", _
         ".", "mySource")
      EventLog1.WriteEntry("Application_OnEnd fired!")
   End Sub
</script>
 
メモ

Web サービスが停止するか "global.asax" ファイルが変更されてアプリケーションが終了したときは、end イベントを使ってクリーンアップ作業を実行すると便利です。