Простая программа, которая печатает 0,1,2 и 0,1,2, показывающая, что домен приложения не разделяет статические данные.
Только что изменено одно из: Статические поля в AppDomain
public static class Class1
{
private static int Value = 0;
public static void IncrementAndPrint()
{
Console.WriteLine(Value++);
}
}
public class Foo : MarshalByRefObject
{
public void Bar()
{
Class1.IncrementAndPrint();
}
}
class Program
{
static void Main(string[] args)
{
var appDomain1 = System.AppDomain.CreateDomain("AppDomain1");
var appDomain2 = System.AppDomain.CreateDomain("AppDomain2");
var class1InAppDomain1 = (Foo)appDomain1.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, "ConsoleApplication1.Foo");
var class1InAppDomain2 = (Foo)appDomain2.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, "ConsoleApplication1.Foo");
class1InAppDomain1.Bar();
class1InAppDomain1.Bar();
class1InAppDomain1.Bar();
class1InAppDomain2.Bar();
class1InAppDomain2.Bar();
class1InAppDomain2.Bar();
}
}