Count | |
Integer = Application.Count | |
Application コレクションに現在格納されている項目の数を保持する整数を返します。HttpApplicationState クラスによって実装されている Count メンバーは、ICollection インターフェイスから派生しています。 |
|
パラメータ | |
|
|
例 | |
次の例では、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 コレクションの 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 | |
HttpApplicationState オブジェクトに格納されているキー名の文字列配列を返します。 |
|
パラメータ | |
|
|
例 | |
次の例では、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 インスタンスへの参照を返します。 |
|
パラメータ | |
|
|
例 | |
次の例では、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 を返します。 |
|
パラメータ | |
|
|
例 | |
次の例では、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 クラスの 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 " & _ "<object runat="server"> 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 コレクションに値を追加します。 |
|
パラメータ | |
|
|
例 | |
次の例では、項目を 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 への呼び出しでは名前を使用します。 |
|
パラメータ | |
|
|
例 | |
次の例では、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 オブジェクトに格納されているデータ項目のインデックスに対応するキー名を取得します。 |
|
パラメータ | |
|
|
例 | |
次の例では、既知の状態に戻すために 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 コレクションから、名前で指定した項目を削除します。 |
|
パラメータ | |
|
|
例 | |
次の例では、キー "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 メソッドと対になります。 |
|
パラメータ | |
|
|
例 | |
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 コレクションにオブジェクトを設定できるようになりました。 |
|
パラメータ | |
|
|
例 | |
次の例では、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( ) 'イベントハンドラーのロジック | |
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( ) 'イベントハンドラーのロジック | |
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 イベントを使ってクリーンアップ作業を実行すると便利です。 |
|