/// <summary> /// Creates instance of data model codegerator from database connection. /// </summary> /// <param name="languageProvider">Language provider to use for data model codegeneration.</param> /// <param name="nameConverter"><see cref="INameConversionProvider"/> pluralization service implementation.</param> /// <param name="options">Scaffolding process customization options.</param> /// <param name="interceptors">Optional custom scaffold interceptors.</param> public Scaffolder(ILanguageProvider languageProvider, INameConversionProvider nameConverter, ScaffoldOptions options, ScaffoldInterceptors?interceptors) { Language = languageProvider; _namingServices = new NamingServices(nameConverter); _options = options; _interceptors = interceptors; }
public void UpdateAsync() { List <NamingService> namingServices; // 更新処理中にネーミングサービスの追加や削除されると困るのでコピーしておく。 // (更新処理中にずっとロックしておくと、AddやRemoveが止まってしまう) lock (NamingServices) { namingServices = NamingServices.ToList(); IsUpdating = true; } Observable.Start(() => { lock (OutPortTree) lock (InPortTree) { OutPortTree.Clear(); //TODO: Clearだと通知されないことがある。RemoveAllだとアクセスエラー。 InPortTree.Clear(); foreach (var namingService in namingServices) { try { namingService.Client.ClearZombie <RTObject>(); OutPortTree.Add(namingService.Factory.CreateOutPortTree()); InPortTree.Add(namingService.Factory.CreateInPortTree()); } catch (Exception) { namingService.IsAlive = false; } } } }).Subscribe(_ => IsUpdating = false); }