У меня есть таблица в базе данных SQL Server, которая представляет файл журнала некоторых действий, вставленных из службы запущенных окон. Все работает хорошо.SqlDependency using BackgroundWorker
Но у меня есть приложение Windows, которое получает последние строки, которые были вставлены в таблицу журналов, и просматривает их в DataGridView
. При разработке этого приложения я зависел от Using SqlDependency in a Windows Application от MSDN. Он работает хорошо, но когда таблица журналов получает большое количество данных журнала, приложение Windows зависает, и основной пул потоков становится слишком занятым.
Я хочу запустить тот же код, указанный в предыдущей ссылке, в отдельном пуле потоков, используя Thread
класс или BackgroundWorker
. Это означает поток для использования элементов управления пользовательского интерфейса, а другой - для прослушивания изменений в базе данных и ввода его в DataGridView
.
Вы можете увидеть скриншот интерфейса по этой ссылке "UI"
No. (1): Это GroupBox представляет инструменты пользовательского интерфейса, которые пользователи могут использовать его во время мониторинга.
№ (2): Пуск button отвечает за то, что он начал слушать и получать обновления из базы данных и пополнять DataGridView.
№ (3): Эта сетка представляет новые журналы, которые были вставлены в базу данных.
№ (4): Это число (38 изменений) представляет собой счетчик прослушивания зависимости sql к изменениям базы данных.
Мой код: общественный частичный класс frmMain: Форма { SqlConnection сопп;
То, что я хочу, а именно: когда пользователь нажимает кнопкуStart, программа запуска кода в отдельном пуле потоков.
Смешения зависимости, например, с BackgroundWorker собирается усложнять. Возможно, подумайте об использовании только одного. –
Интересным упражнением для этого приложения будет прослушиватель приложений, подписавшийся на службу выигрыша и сигнал отправки услуги, обновляемый журнальными таблицами. В это время приложение win будет искать новые данные. –
Спасибо за поддержку, но я не могу разделить приложение на два раздела, как вы сказали. Я должен разработать его в зависимости от предыдущего объяснения, которое в сообщении. Мне просто нужно запустить тот же код в отдельный ** пул потоков ** или запустить его с помощью ** BackgroundWorker **. –