0

1つのソリューションに2つのコンソールアプリケーション(Console1とConsole2)があります。どちらのアプリケーションもクラスライブラリ(CL)を参照します。CLには、コンストラクターごとに設定されるフィールドを含む静的クラス(SC)が含まれています。

私の質問は、Console1内で静的クラスを呼び出し、最初にConsole1を含む静的メソッドのいずれかを呼び出したときにSCのコンストラクターが呼び出され、フィールドがSC内に設定されているかどうかです。ここで、Console2を同時に実行し、独立して実行し、SCにもアクセスする場合、静的クラスSCの正確なスコープは何ですか?Console1内から発生したコンストラクターの呼び出しなどの変更は、Console2で使用されたときのSCの動作に影響を及ぼしますか?

4

4 に答える 4

3

スコープはAppDomainです。

2つの別個のプロセスがあるため、2つの別個のAppDomainと静的クラスの2つの別個の「インスタンス」があります。状態の共有はありません-まったくありません。

于 2013-02-05T11:15:48.023 に答える
1

Console1とConsole2が2つの完全に別個のexeファイルのように独立して実行されている場合、SCコンストラクターが再度呼び出されます。それ以外の場合は呼び出されません。

于 2013-02-05T11:16:44.077 に答える
1

コンソール1と2は別々のプロセスとして実行されています。アセンブリはプロセスごとに(正確にはアプリドメインごとに)ロードされ、それぞれが静的コンストラクターなどを初期化します。したがって、「アセンブリの実行中のインスタンス」は完全に分離されています。

于 2013-02-05T11:17:07.503 に答える
1

あなたの質問は静的クラスに関するものかもしれませんが、あなたが得ている答えはすべてこれに要約されます:プロジェクトの2つの別々のインスタンスを実行する場合、一方のインスタンスで使用されるクラスは他方と相互作用しません。実際、同じプロジェクトの2つのインスタンスを実行でき、問題はありません。MicrosoftWordの2つのインスタンスを実行するのと同じです

于 2013-02-05T11:29:11.267 に答える