public NestResult Start(IEggParameters parameters) { host = parameters.Host; var configuration = pofSerializer.Deserialize <TrinketStartupConfiguration>(streamFactory.CreateMemoryStream(parameters.Arguments).Reader); trinketDtpServer = trinketDtpServerFactory.Create(configuration); var trinketBridge = new TrinketBridgeImpl(temporaryFileService, processInjectionService, trinketInternalUtilities, configuration, trinketDtpServer); keepaliveObjects.Add(trinketBridge); var injectionSuccessful = trinketBridge.Initialize(); if (injectionSuccessful) { var process = processProxy.GetProcessById(configuration.TargetProcessId); process.Exited += (o, s) => { Shutdown(ShutdownReason.None); }; process.EnableRaisingEvents = true; } return(injectionSuccessful ? NestResult.Success : NestResult.Failure); }