2014-10-29 2 views
0

Я заполняю sqldataadapter с несколькими тысячами записей с удаленного сервера. За это время приложение замерзает, пока данные выборки не закончатся. Когда-то это занимало несколько минут, иногда намного дольше, в зависимости от доступности сервера, поэтому пользователь никогда не знал, сколько записей загружено и когда процесс будет завершен. По этой причине я хочу реализовать somecind of counter, сколько записей осталось для завершения процесса загрузки.Управление количеством возвратов в sqldataadapter

Это, как я заполняю SqlDataAdapter:

 void FillDataAdapter(string sQuery) 
     { 
      SqlDataAdapter mySqlDataAdapter; 
      SqlCommandBuilder mySqlCommandBuilder; 
      DataTable dataTable; 

      mySqlDataAdapter = new SqlDataAdapter(sQuery, this.connection); 
      mySqlCommandBuilder = new SqlCommandBuilder(mySqlDataAdapter); 
      mySqlDataAdapter.SelectCommand.CommandTimeout = 30; 

      dataTable = new DataTable();      
      mySqlDataAdapter.Fill(dataTable); 
     } 

по этому приложению линия freezs до заполнения не будет сделано:

mySqlDataAdapter.Fill(dataTable); 

метод Fill имеет тип данных INT возврата, но я могу получить только количество записей в адаптере данных после заполнения. На каком пути я могу получить текущее количество записей в dataadapter?

ответ

0

Я думаю, что это невозможно, но вы можете использовать

public int Fill(
    int startRecord, 
    int maxRecords, 
    params DataTable[] dataTables 
) 

метод заполнения перегрузки, чтобы получить номер записи, которую вы хотите.

0

Вы можете использовать threadpool здесь для асинхронного вызова этого подключения к базе данных. Вот ссылка на вашу помощь. http://msdn.microsoft.com/en-us/library/3dasc8as.aspx http://www.codeproject.com/Articles/7933/Smart-Thread-Pool

Если вы используете счетчик здесь, то вы тоже должны ждать, пока все данные не были извлечены. Но если вы используете threadpool, вам не нужно ждать выполнения этой части кода. Когда эта часть кода будет выполнена, будет также выполнена другая часть кода. Когда все данные будут извлечены, вы можете отобразить все данные в этот момент. Вам не нужно беспокоиться о не отвечающем или занятом сервером деле.

 Смежные вопросы

  • Нет связанных вопросов^_^