public static void executeInAppDomain(string appDomainName, string scriptToExecute) { O2Thread.mtaThread( () => { var o2AppDomain = new O2AppDomainFactory(appDomainName); try { o2AppDomain.load("O2_XRules_Database"); o2AppDomain.load("O2_Kernel"); o2AppDomain.load("O2_DotNetWrappers"); var o2Proxy = (O2Proxy)o2AppDomain.getProxyObject("O2Proxy"); o2Proxy.InvokeInStaThread = true; o2Proxy.staticInvocation("O2_External_SharpDevelop", "FastCompiler_ExtensionMethods", "executeSourceCode", new object[] { scriptToExecute }); } catch (Exception ex) { ex.log("inside new AppDomain"); } DebugMsg.showMessageBox("Click OK to close the '{0}' AppDomain (and close all open windows)".format(appDomainName)); o2AppDomain.unLoadAppDomain(); }); }
public static string executeEngineOnSeparateAppDomain(string sourceFolder, string resultsFolder, string methodFilter, bool useCachedData, List <string> references, int numberOfItemsToProcess) { //var script = @"C:\O2\_XRules_Local\Ast_Test.cs"; var script = "MethodMappings_Engine.cs".local(); "Creating new AppDomain".info(); var appDomainName = 4.randomString(); var o2AppDomain = new O2AppDomainFactory(appDomainName); //o2AppDomain.load("O2_XRules_Database"); //o2AppDomain.load("O2_Kernel"); //o2AppDomain.load("O2_DotNetWrappers"); o2AppDomain.load("FluentSharp.CoreLib"); o2AppDomain.load("FluentSharp.WinForms"); o2AppDomain.load("FluentSharp.REPL"); o2AppDomain.load("FluentSharp.SharpDevelopEditor.dll"); var o2Proxy = (O2Proxy)o2AppDomain.getProxyObject("O2Proxy"); var parameters = new object[] { sourceFolder, resultsFolder, methodFilter, useCachedData, references, numberOfItemsToProcess }; var result = (string)o2Proxy.staticInvocation("O2_External_SharpDevelop", "FastCompiler_ExtensionMethods", "executeFirstMethod", new object[] { script, parameters }); o2AppDomain.unLoadAppDomain(); "AppDomain execution completed, Runing GCCollect".info(); PublicDI.config.gcCollect(); "GCCollect completed, returning result data: {0}".info(result); return(result); }
public static string codeStreams_CreateInAppDomain(this Saved_MethodStream savedMethodStream) { //var script = @"C:\O2\_XRules_Local\Ast_Test.cs"; var script = "Saved_MethodStream.cs".local(); "Creating new AppDomain".info(); var appDomainName = 4.randomString(); var o2AppDomain = new O2AppDomainFactory(appDomainName); o2AppDomain.load("FluentSharp.CoreLib.dll"); var o2Proxy = (O2Proxy)o2AppDomain.getProxyObject("O2Proxy"); var parameters = new object[] { savedMethodStream.Serialized_Saved_MethodStream_FileCache // sourceFolder, // resultsFolder, // methodFilter, // useCachedData, // references, // numberOfItemsToProcess }; var result = (string)o2Proxy.staticInvocation("O2_External_SharpDevelop", "FastCompiler_ExtensionMethods", "executeFirstMethod", new object[] { script, parameters }); "Result: {0}".info(result); o2AppDomain.sleep(2000); o2AppDomain.unLoadAppDomain(); "AppDomain execution completed, Runing GCCollect".info(); PublicDI.config.gcCollect(); "GCCollect completed, returning result data: {0}".info(result); return(result); }
public static string executeScriptInSeparateAppDomain(this string scriptToExecute, bool showLogViewer, bool openScriptGui) { var appDomainName = 12.randomLetters(); var o2AppDomain = new O2AppDomainFactory(appDomainName); /* o2AppDomain.load("O2_XRules_Database"); * o2AppDomain.load("O2_Kernel"); * o2AppDomain.load("O2_DotNetWrappers"); * * var o2Proxy = (O2Proxy)o2AppDomain.getProxyObject("O2Proxy"); * if (o2Proxy.isNull()) * { * "in executeScriptInSeparateAppDomain, could not create O2Proxy object".error(); * return null; * } * o2Proxy.InvokeInStaThread = true; * if (showLogViewer) * o2Proxy.executeScript( "O2Gui.open<Panel>(\"Util - LogViewer\", 400,140).add_LogViewer();"); * if (openScriptGui) * o2Proxy.executeScript("O2Gui.open<Panel>(\"Script editor\", 700, 300)".line() + * " .add_Script(false)".line() + * " .onCompileExecuteOnce()".line() + * " .Code = \"hello\";".line() + * "//O2File:Scripts_ExtensionMethods.cs"); * o2Proxy.executeScript(scriptToExecute); * PublicDI.log.showMessageBox("Click OK to close the '{0}' AppDomain (and close all open windows)".format(appDomainName)); */ o2AppDomain.unLoadAppDomain(); return(scriptToExecute); }