using System;
using System.Reflection ;
using System.Threading ;
namespace TestTwoDomainsAndSingeThread
{
public class Worker : MarshalByRefObject
{
public void PrintDomain( )
{
Console.WriteLine ( "Object is executing in AppDomain \" {0}\" " ,
AppDomain.CurrentDomain .FriendlyName ) ;
Console.WriteLine ( "AppDomain for current thread: " + Thread.GetDomain ( ) .FriendlyName ) ;
Console.WriteLine ( "Current thread ID: " + Thread.CurrentThread .ManagedThreadId .ToString ( ) ) ;
}
}
public class Test
{
static void Main( string[ ] args)
{
// Create an ordinary instance in the current AppDomain
Worker localWorker = new Worker( ) ;
localWorker.PrintDomain ( ) ;
// Create a new application domain, create an instance
// of Worker in the application domain, and execute code
// there.
AppDomain ad = AppDomain.CreateDomain ( "New domain" ) ;
Worker remoteWorker = ( Worker) ad.CreateInstanceAndUnwrap (
typeof( Worker) .Assembly .FullName ,
typeof( Worker) .FullName ) ;
remoteWorker.PrintDomain ( ) ;
Console.ReadLine ( ) ;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKdXNpbmcgU3lzdGVtLlRocmVhZGluZzsKCm5hbWVzcGFjZSBUZXN0VHdvRG9tYWluc0FuZFNpbmdlVGhyZWFkCnsKICAgIHB1YmxpYyBjbGFzcyBXb3JrZXIgOiBNYXJzaGFsQnlSZWZPYmplY3QKICAgIHsKICAgICAgICBwdWJsaWMgdm9pZCBQcmludERvbWFpbigpCiAgICAgICAgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiT2JqZWN0IGlzIGV4ZWN1dGluZyBpbiBBcHBEb21haW4gXCJ7MH1cIiIsCiAgICAgICAgICAgICAgICBBcHBEb21haW4uQ3VycmVudERvbWFpbi5GcmllbmRseU5hbWUpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiQXBwRG9tYWluIGZvciBjdXJyZW50IHRocmVhZDogIiArIFRocmVhZC5HZXREb21haW4oKS5GcmllbmRseU5hbWUpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiQ3VycmVudCB0aHJlYWQgSUQ6ICIgKyBUaHJlYWQuQ3VycmVudFRocmVhZC5NYW5hZ2VkVGhyZWFkSWQuVG9TdHJpbmcoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBjbGFzcyBUZXN0CiAgICB7CiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIG9yZGluYXJ5IGluc3RhbmNlIGluIHRoZSBjdXJyZW50IEFwcERvbWFpbgogICAgICAgICAgICBXb3JrZXIgbG9jYWxXb3JrZXIgPSBuZXcgV29ya2VyKCk7CiAgICAgICAgICAgIGxvY2FsV29ya2VyLlByaW50RG9tYWluKCk7CgogICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYXBwbGljYXRpb24gZG9tYWluLCBjcmVhdGUgYW4gaW5zdGFuY2UKICAgICAgICAgICAgLy8gb2YgV29ya2VyIGluIHRoZSBhcHBsaWNhdGlvbiBkb21haW4sIGFuZCBleGVjdXRlIGNvZGUKICAgICAgICAgICAgLy8gdGhlcmUuCiAgICAgICAgICAgIEFwcERvbWFpbiBhZCA9IEFwcERvbWFpbi5DcmVhdGVEb21haW4oIk5ldyBkb21haW4iKTsKICAgICAgICAgICAgV29ya2VyIHJlbW90ZVdvcmtlciA9IChXb3JrZXIpYWQuQ3JlYXRlSW5zdGFuY2VBbmRVbndyYXAoCiAgICAgICAgICAgICAgICB0eXBlb2YoV29ya2VyKS5Bc3NlbWJseS5GdWxsTmFtZSwKICAgICAgICAgICAgICAgIHR5cGVvZihXb3JrZXIpLkZ1bGxOYW1lKTsKICAgICAgICAgICAgcmVtb3RlV29ya2VyLlByaW50RG9tYWluKCk7CiAgICAgICAgICAgIENvbnNvbGUuUmVhZExpbmUoKTsKICAgICAgICB9CiAgICB9Cn0=