Nitin Surya Ответов: 1

Получение пустого набора данных в функции, которая вызывается из потока или таймера


Привет.
Я разрабатываю приложение с помощью C#.net и sql DB, я использую набор данных и адаптеры для извлечения данных. Я получаю набор данных как пустой, если я запускаю его в таймере или потоке, но если я запускаю тот же запрос в sql server, он дает мне некоторое количество строк. Когда я запускаю этот код вне таймера(на странице lode или при нажатии кнопки), то он дает мне ожидаемые результаты
Проблема с таймером или потоком.
Я не знаю, почему это происходит.

здесь 'ds' в пустом виде в приведенном ниже коде
инструменты : vs10, sqlserver 2008 R2

Что я уже пробовал:

private void timer_Tick(object sender, EventArgs e)
   {
       SqlConnection con = new SqlConnection("Integrated security=false;Initial Catalog=" + Catalog + ";Data source=" + DataSource + ";User ID=" + DBUserID + ";Password=" + DBPassword + "");
       string sSql = "SELECT * from table ";
       DataSet ds = new DataSet();
       SqlDataAdapter adap = new SqlDataAdapter(sSql, con);
       adap.Fill(ds);
       if (ds.Tables[0].Rows.Count > 0)
       {
       }
   }

1 Ответов

Рейтинг:
2

Richard MacCutchan

Тест для подсчета строк на самом деле ничего не делает; откуда вы знаете, что он возвращает ноль? Кроме того, вы создаете новый DatasSet и SqlDataAdapter внутри дома timer_Tick метод. Поэтому, как только этот метод возвращается, оба объекта выходят из области видимости и исчезают. Почему вы используете таймер в первую очередь?


Nitin Surya

Тест для подсчета строк на самом деле ничего не делает; откуда вы знаете, что он возвращает ноль? : я не опубликовал код, который должен быть выполнен после rowcount > 0 для простоты вопроса, я только что опубликовал код, где я получаю проблему...
я проверяю в режиме отладки.

Кроме того, вы создаете новый DatasSet и SqlDataAdapter внутри метода timer_Tick : yes.. здесь я буду выполнять одну задачу, которая должна выполняться через регулярные промежутки времени... таким образом, этот набор данных и SqlDataAdapter не будут использоваться вне любого места в проекте..

Richard MacCutchan

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

Nitin Surya

да