public async Task GetInfo() { async Task GetInfoInternal() { if (_solution.DatabaseConfigurations.IsDbValid) { var connection = _solution.DatabaseConfigurations.DbConnection; var sqlConnBuilder = new SqlConnectionStringBuilder(connection); var conn = new SqlConnection(connection); var SqlDatabase = new SqlDatabase { DatabaseName = sqlConnBuilder.InitialCatalog, ConnectionString = connection, Tables = new List <SqlTable>() }; var tables = await GetDbTables(conn, SqlDatabase); var compareRes = _dbmlCompare.Compare(_solution.DatabaseConfigurations.DbmlPath, tables); SqlDatabase.Tables.AddRange(tables); conn.Dispose(); Tables.ClearAndFill(await SqlDatabase.Tables.OrderBy(e => e.TableName).Select(CreateSqlTableViewModel)); TablesCount = Tables.Count; ValidateTables(Tables); } } await ToggleBusyAsync(Task.Run(GetInfoInternal)); }