public static IDomain Create(string name, Reactor.Action callback) { var setup = new AppDomainSetup() { ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase, ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, ApplicationName = AppDomain.CurrentDomain.SetupInformation.ApplicationName, LoaderOptimization = LoaderOptimization.MultiDomainHost }; var appdomain = AppDomain.CreateDomain(name, null, setup); var domain = (Domain)appdomain.CreateInstanceAndUnwrap( typeof(Domain).Assembly.FullName, typeof(Domain).FullName); domain.Start(appdomain, callback); return domain; }
public static void Post(Reactor.Action action) { Reactor.Context.Instance.Post(action); }
/// <summary> /// (experimental) Protects this object against GC collection for a set period of time. /// </summary> /// <param name="obj">The object to pin.</param> /// <param name="timeout">The timeout (in milliseconds) in which this object should be pinned.</param> /// <param name="callback">The callback triggered when the timeout completes.</param> public static void Pin(object obj, int timeout, Reactor.Action callback) { var instance = GC.Instance; instance.PinObject(obj); Reactor.Timeout.Create(() => { instance.UnPinObject(obj); callback(); }, timeout); }
private void Start(AppDomain domain, Reactor.Action callback) { this.domain = domain; Reactor.Loop.Start(); Reactor.Loop.Post(callback); }
public static IDomain Create(Reactor.Action callback) { return Domain.Create(Guid.NewGuid().ToString(), callback); }
public void Post(Reactor.Action message) { this.actions.Enqueue(message); }