2011-09-05 16 views
0

私は少し混乱しています...私のWebアプリケーションに問題があります。顧客の見積もりを生成するシステムを構築する。顧客が見積もりを要求すると、複数の生成された見積もりが元の要求に基づいてそれらに送信されます。私の.vbファイルでASP.NETの共有変数私は混乱していますか?

は私が持っている:

Partial Class NewQuote 
Private Shared GeneratedQuoteIDArray As New ArrayList 

このGeneratedQuoteIDArrayが、その後アクセスし、いくつかの保護されたサブのから構築されます。

マルチユーザ環境では問題があります。誰かが同じページで作業している場合、GeneratedQuoteIDArrayは両方のユーザー値を保持しています。

助けてください...私は確かに何か愚かなことをやっている私は確信しています!

答えて

1

Sharedは、それが特定のインスタンスではなく、クラス自体の定義に付加された静的な値であることを意味します。したがって、アプリケーションのコンテキスト内に1つしかありません。そのため、他のコードパスは同じ値を変更し、お互いの値を上書きします。

静的な値ではなく、インスタンスの値を探しているようです。

このようにすると、そのクラスの新しいインスタンスにアタッチされ、そのインスタンスに対してのみプライベートになります。したがって、個別のインスタンスを持つ個別の要求には別々の値があります。

Sharedメンバーhereなど、他の多くの場所について読むことができます。この話題を研究するとき、探しているキーワードは変数や関数などの点で "静的かインスタンスか"です。Cスタイルのコードでは説明しているかもしれませんが、 VBで同じ方法。 VBはstaticの代わりにSharedと呼びます。

+0

こんにちはDavid、非常に完全な答えをありがとう。今、私は分かる!私は奇妙な問題を抱えています:(私は使用して: GeneratedQuoteIDArray.Add(GeneratedQuoteID) セッション( "GeneratedQuoteIDs")= GeneratedQuoteIDArray 配列を構築するために私の各サブ。私のセッションから、私は配列に最後に追加した項目しか得られません。どのアイデアですか? ar =セッション( "GeneratedQuoteIDs") –

+0

@ Mr-Confily-Confused:わかりません。 (私が知っていない 'Session'に格納されている型についてのいくつかの癖がない限り)それはどこか別のコードが上書きしている可能性があります。同様に、設定した後に_immediately_値を取得した場合(そしてその型に必要なキャストを行った場合)、それでも問題は発生しますか? – David

+0

ちょっと@David、あなたがコメントした後、私は全体のアプリを通過し、いくつかのclunkyビットを書き直すことにしました。問題を解決したようです:)あなたの助けをたくさんありがとう –

0

ユーザーごとのデータは、SessionまたはCookieのどこかに保管してください。

関連する問題