0

我在一个解决方案中有 2 个控制台应用程序(Console1 和 Console2)。两个应用程序都引用一个类库 (CL)。CL 包含一个静态类 (SC),其中包含每个构造函数设置的字段。

我的问题是,如果我在 Console1 中调用静态类,并且在第一次调用任何包含在 SC 中设置的静态方法和字段的 Console1 时调用 SC 的构造函数。现在,如果我同时运行 Console2,虽然是独立运行,并且还访问 SC,那么静态类 SC 的确切范围是什么?在 Console1 中调用其构造函数等任何更改是否会对 SC 在 Console2 中使用时的行为方式产生任何影响?

4

4 回答 4

3

范围是 AppDomain。

因为您有两个单独的进程,所以您有两个单独的 AppDomain 和两个单独的静态类“实例”。没有状态共享——根本没有。

于 2013-02-05T11:15:48.023 回答
1

您的问题可能与静态类有关,但您得到的答案都归结为:如果您运行一个项目的两个单独实例,则一个实例中使用的类不会与另一个实例交互。事实上,你可以运行同一个项目的两个实例,你不会有任何问题。运行两个 Microsoft Word 实例没有什么不同

于 2013-02-05T11:29:11.267 回答
1

如果 Console1 和 Console2 像两个完全独立的 exe 文件一样独立运行,则会再次调用 SC 构造函数,否则不会。

于 2013-02-05T11:16:44.077 回答
1

控制台 1 和 2 作为单独的进程运行。程序集是按进程加载的(准确地说是按应用程序域),每个程序都会初始化静态构造函数等。因此,“程序集的运行实例”是完全独立的。

于 2013-02-05T11:17:07.503 回答