Запросы к БД в отдельном потоке - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Хочу спросить специалистов и просто опытных людей. Делаю приложение winForms. Приложение будет отображать результаты запросов к БД. так как данные в БД обновляются регулярно, приложение будет обновлять данные из БД по таймеру, например раз в секунду. Некоторые запросы могут занять продолжительное время, и не хотелось бы, чтобы форма в это время зависала. Следовательно, запросы надо поместить в отдельный поток. Таймер хочу использовать однопоточный, System.Windows.Forms.Timer с интервалом 1000. Для запуска запроса в фоновом режиме буду использовать BackgroundWorker по событию таймера OnTick. Вопрос: Верно ли я планирую структуру приложения, и правильно ли использовать таймер формы в потоке самой формы?

Решение задачи: «Запросы к БД в отдельном потоке»

textual
Листинг программы
  1.         public async Task LoadAsync()
  2.         {
  3.             _locker.EnterWriteLock();
  4.             try
  5.             {
  6.                 if (_isSynchronized) return;
  7.                 using (var connection = new SqlConnection(_connectionString))
  8.                 {
  9.                     await connection.OpenAsync();
  10.                     var response = await ReadDatabase(connection);
  11.                     lock (_locker)
  12.                     {
  13.                         _counters = response;
  14.                         _isSynchronized = true;
  15.                     }
  16.                 }
  17.             }
  18.             finally
  19.             {
  20.                 _locker.ExitWriteLock();
  21.             }
  22.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы