public ApplicationManageImpl(IMapper mapper, IApplicationInfoRepository applicationInfoRepository) { _applicationHandlerContext = new DotNetCoreApplicationHandlerContext(); var pm2ApplicationHandlerContext = new PM2ApplicationHandlerContext(); _applicationHandlerContext.SetNext(pm2ApplicationHandlerContext); var exeApplicationHandlerContext = new ExeApplicationHandlerContext(); pm2ApplicationHandlerContext.SetNext(exeApplicationHandlerContext); var staticDocumentApplicationHandlerContext = new StaticDocumentApplicationHandlerContext(); exeApplicationHandlerContext.SetNext(staticDocumentApplicationHandlerContext); Task initTask = Task.Run(async() => { List <ApplicationInfo> applicationInfos = await applicationInfoRepository.FindAsync(m => true); var applicationInfoModels = mapper.Map <List <ApplicationInfoModel> >(applicationInfos); foreach (ApplicationInfoModel applicationInfoModel in applicationInfoModels) { applicationInfoModel.ApplicationStatus = ApplicationStatusEnum.Stop; Add(applicationInfoModel); } foreach (KeyValuePair <Guid, ApplicationRuntimeModel> item in _allApplicationInfos) { _applicationHandlerContext.KillProcess(item.Value); } }); Task.WaitAll(initTask); }