private static void EnsureEnvironmentStarted(IEnvironmentLifecycle environment) { Task <EnvironmentStartResult> environmentStarting; lock (environmentStartTasks) { if (!environmentStartTasks.TryGetValue(environment.GetType(), out environmentStarting)) { lock (environmentStartTasks) { environmentStarting = new Task <EnvironmentStartResult>(() => { try { environment.Start(); return(EnvironmentStartResult.Success); } catch (Exception ex) { Console.WriteLine("Failed starting {0}", environment.GetType().FullName); Console.WriteLine(ex.ToString()); return(EnvironmentStartResult.Failed); } }); environmentStarting.Start(); environmentStartTasks.Add(environment.GetType(), environmentStarting); } } } environmentStarting.Wait(); }
public EnvironmentsBinPathWatch(string dllPath, IEnvironmentLifecycle environments) : this(dllPath, new List <IEnvironmentLifecycle> { environments }) { }
public RemoteEnvironmentLifecycle(IEnvironmentLifecycle environment) { this.environment = environment; }