private static void DoWorkInShadowCopiedDomain() { var className = (string)AppDomain.CurrentDomain.GetData("ClassName"); var arguments = (string[])AppDomain.CurrentDomain.GetData("Arguments"); GenericPollerProcess process = new GenericPollerProcess(CreateUnityContainer()); //execute GenericPollerProcessRun(process, className, arguments); }
private static void GenericPollerProcessRun(GenericPollerProcess process, string className, string[] arguments) { try { process.Run(className, arguments); } catch (Exception ex) { Console.WriteLine(string.Format("Exception: {0}", ex.Message)); Console.WriteLine(string.Format("StackTrace: {0}", ex.StackTrace)); } }
private static void StartPollerProcess(string className, string[] arguments, bool shadowCopy) { if (shadowCopy) { //start in new appDomain var appDomainSetup = new AppDomainSetup { ShadowCopyFiles = "true" }; var appDomain = AppDomain.CreateDomain(AppDomain.CurrentDomain.FriendlyName, AppDomain.CurrentDomain.Evidence, appDomainSetup); appDomain.SetData("ClassName", className); appDomain.SetData("Arguments", arguments); appDomain.DoCallBack(new CrossAppDomainDelegate(DoWorkInShadowCopiedDomain)); } else { //start in host appDomain var process = new GenericPollerProcess(CreateUnityContainer()); GenericPollerProcessRun(process, className, arguments); } }