public static T Run <T>(string name, DomainDelegate method, params object[] parameters) { AppDomain domain = null; try { domain = AppDomain.CreateDomain(name); var key = string.Concat("RESULT", method.GetHashCode()); var runner = new Runner(method, key, parameters); domain.DoCallBack(new CrossAppDomainDelegate(runner.Invoke)); return((T)domain.GetData(key)); } #if DEBUG catch (Exception error) { System.Console.WriteLine(error); throw; } #endif finally { if (domain != null) { AppDomain.Unload(domain); } } }
/// <summary> /// The shop’s primary domain. /// </summary> public ShopQuery primaryDomain(DomainDelegate buildQuery) { Query.Append("primaryDomain "); Query.Append("{"); buildQuery(new DomainQuery(Query)); Query.Append("}"); return(this); }
public static object Run(string name, DomainDelegate method, params object[] parameters) { return(Run <object>(name, method, parameters)); }
public Runner(DomainDelegate method, string key, object[] args) { this.Method = method; this.Key = key; this.Arguments = args; }