private async Task DoUpdateDatabasesList(CancellationToken ct) { try { _parentWindow.Dispatcher.Invoke(() => DatabaseNamesList.Clear()); var connectionStringBuilder = new SqlConnectionStringBuilder { DataSource = ServerName }; if (AuthenticationType == AuthenticationType.WindowsAuthentication) { connectionStringBuilder.IntegratedSecurity = true; } else { connectionStringBuilder.IntegratedSecurity = false; connectionStringBuilder.UserID = SqlServerUsername; connectionStringBuilder.Password = Password; } var connectionString = connectionStringBuilder.ConnectionString; var list = await SqlServerEnumeration.GetDatabaseNamesAsync(connectionString, ct); _parentWindow.Dispatcher.Invoke(() => { if (!list.Any()) { return; } foreach (var name in list) { DatabaseNamesList.Add(name); } if (DatabaseNamesList.IndexOfIgnoreCase(DatabaseName) < 0) { DatabaseName = list.First(); } }); } catch { // whatever happens here - we don't care } }
public async Task LoadSqlServerInstances() { IsLoading = true; var localInstancesTask = Task.Factory.StartNew(() => { var localInstances = SqlServerEnumeration.EnumLocalInstances(); _parentWindow.Dispatcher.Invoke(() => localInstances.ForEach((instance => LocalInstancesCollection.Add(instance)))); }); var remoteInstancesTask = Task.Factory.StartNew(() => { var remoteInstances = SqlServerEnumeration.EnumRemoteInstances(); _parentWindow.Dispatcher.Invoke(() => remoteInstances.ForEach((instance => RemoteInstancesCollection.Add(instance)))); }); await Task.WhenAll(localInstancesTask, remoteInstancesTask); IsLoading = false; }