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 ) ;
}
}
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 ( ) ;
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUmVmbGVjdGlvbjsKdXNpbmcgU3lzdGVtLlRocmVhZGluZzsKCm5hbWVzcGFjZSBUZXN0VHdvRG9tYWluc0FuZFNpbmdlVGhyZWFkCnsKICAgIHB1YmxpYyBjbGFzcyBXb3JrZXIgOiBNYXJzaGFsQnlSZWZPYmplY3QKICAgIHsKICAgICAgICBwdWJsaWMgdm9pZCBQcmludERvbWFpbigpCiAgICAgICAgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiT2JqZWN0IGlzIGV4ZWN1dGluZyBpbiBBcHBEb21haW4gXCJ7MH1cIiIsCiAgICAgICAgICAgICAgICBBcHBEb21haW4uQ3VycmVudERvbWFpbi5GcmllbmRseU5hbWUpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiQXBwRG9tYWluIGZvciBjdXJyZW50IHRocmVhZDogIiArIFRocmVhZC5HZXREb21haW4oKS5GcmllbmRseU5hbWUpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgY2xhc3MgVGVzdAogICAgewogICAgICAgIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBvcmRpbmFyeSBpbnN0YW5jZSBpbiB0aGUgY3VycmVudCBBcHBEb21haW4KICAgICAgICAgICAgV29ya2VyIGxvY2FsV29ya2VyID0gbmV3IFdvcmtlcigpOwogICAgICAgICAgICBsb2NhbFdvcmtlci5QcmludERvbWFpbigpOwoKICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGFwcGxpY2F0aW9uIGRvbWFpbiwgY3JlYXRlIGFuIGluc3RhbmNlCiAgICAgICAgICAgIC8vIG9mIFdvcmtlciBpbiB0aGUgYXBwbGljYXRpb24gZG9tYWluLCBhbmQgZXhlY3V0ZSBjb2RlCiAgICAgICAgICAgIC8vIHRoZXJlLgogICAgICAgICAgICBBcHBEb21haW4gYWQgPSBBcHBEb21haW4uQ3JlYXRlRG9tYWluKCJOZXcgZG9tYWluIik7CiAgICAgICAgICAgIFdvcmtlciByZW1vdGVXb3JrZXIgPSAoV29ya2VyKWFkLkNyZWF0ZUluc3RhbmNlQW5kVW53cmFwKAogICAgICAgICAgICAgICAgdHlwZW9mKFdvcmtlcikuQXNzZW1ibHkuRnVsbE5hbWUsCiAgICAgICAgICAgICAgICB0eXBlb2YoV29ya2VyKS5GdWxsTmFtZSk7CiAgICAgICAgICAgIHJlbW90ZVdvcmtlci5QcmludERvbWFpbigpOwogICAgICAgICAgICBDb25zb2xlLlJlYWRMaW5lKCk7CiAgICAgICAgfQogICAgfQp9