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

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


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

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

15   голосов , оценка 3.933 из 5
Похожие ответы