Запросы к БД в отдельном потоке - C#
Формулировка задачи:
Всем привет!
Хочу спросить специалистов и просто опытных людей.
Делаю приложение winForms. Приложение будет отображать результаты запросов к БД.
так как данные в БД обновляются регулярно, приложение будет обновлять данные из БД по таймеру, например раз в секунду.
Некоторые запросы могут занять продолжительное время, и не хотелось бы, чтобы форма в это время зависала.
Следовательно, запросы надо поместить в отдельный поток.
Таймер хочу использовать однопоточный, System.Windows.Forms.Timer с интервалом 1000.
Для запуска запроса в фоновом режиме буду использовать BackgroundWorker по событию таймера OnTick.
Вопрос: Верно ли я планирую структуру приложения,
и правильно ли использовать таймер формы в потоке самой формы?
Решение задачи: «Запросы к БД в отдельном потоке»
textual
Листинг программы
- public async Task LoadAsync()
- {
- _locker.EnterWriteLock();
- try
- {
- if (_isSynchronized) return;
- using (var connection = new SqlConnection(_connectionString))
- {
- await connection.OpenAsync();
- var response = await ReadDatabase(connection);
- lock (_locker)
- {
- _counters = response;
- _isSynchronized = true;
- }
- }
- }
- finally
- {
- _locker.ExitWriteLock();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д