コード例 #1
0
        private void UpdateTablesListAsync(object sender, DoWorkEventArgs e)
        {
            var builder  = (DbConnectionStringBuilder)((object[])e.Argument)[0];
            var database = (string)((object[])e.Argument)[1];

            var discoveredDatabase = new DiscoveredServer(builder).ExpectDatabase(database);
            IDiscoveredDatabaseHelper databaseHelper = discoveredDatabase.Helper;

            _workerRefreshTablesToken = new CancellationTokenSource();

            var syntaxHelper = discoveredDatabase.Server.GetQuerySyntaxHelper();

            try
            {
                using (var con = discoveredDatabase.Server.GetConnection())
                {
                    var openTask = con.OpenAsync(_workerRefreshTablesToken.Token);
                    openTask.Wait(_workerRefreshTablesToken.Token);

                    List <DiscoveredTable> result = new List <DiscoveredTable>();

                    result.AddRange(databaseHelper.ListTables(discoveredDatabase, syntaxHelper, con, database, true));
                    result.AddRange(databaseHelper.ListTableValuedFunctions(discoveredDatabase, syntaxHelper, con, database));

                    _listTablesAsyncResult = result;
                }
            }
            catch (OperationCanceledException)//user cancels
            {
                _listTablesAsyncResult = new List <DiscoveredTable>();
            }
        }