public void Dispose() { if (controller != null) { controller.ReleaseInstance (this); controller = null; } }
public ProcessHost(IProcessHostController controller) { this.controller = controller; MarshalByRefObject mbr = (MarshalByRefObject)controller; ILease lease = mbr.GetLifetimeService() as ILease; lease.Register(this); }
public static int Main(string[] args) { string tmpFile = null; TextReader input = null; try { // The first parameter is the task id // The second parameter is the temp file that contains the data // If not provided, data is read from the standard input if (args.Length > 1) { tmpFile = args [1]; input = new StreamReader(tmpFile); } else { input = Console.In; } string sref = input.ReadLine(); string pidToWatch = input.ReadLine(); if (tmpFile != null) { try { input.Close(); File.Delete(tmpFile); } catch { } } WatchParentProcess(int.Parse(pidToWatch)); string unixPath = RegisterRemotingChannel(); byte[] data = Convert.FromBase64String(sref); MemoryStream ms = new MemoryStream(data); BinaryFormatter bf = new BinaryFormatter(); IProcessHostController pc = (IProcessHostController)bf.Deserialize(ms); LoggingService.AddLogger(new LocalLogger(pc.GetLogger(), args[0])); ProcessHost rp = new ProcessHost(pc); pc.RegisterHost(rp); try { pc.WaitForExit(); } catch { } try { rp.Dispose(); } catch { } if (unixPath != null) { File.Delete(unixPath); } } catch (Exception ex) { Console.WriteLine(ex); } return(0); }
public ProcessHost (IProcessHostController controller) { this.controller = controller; MarshalByRefObject mbr = (MarshalByRefObject) controller; ILease lease = mbr.GetLifetimeService () as ILease; lease.Register (this); }
public void Attach(IProcessHostController controller) { this.controller = controller; }