Запросы к БД в отдельном потоке - 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();
}
}