Member 12311311 Ответов: 1

Многопоточность в Windows.


Я разрабатываю решение для клиента, где данные in должны быть опрошены из таблицы SQL и запрос должен быть отправлен в службу WCF с запросом, сформированным из этих данных. Ответ службы WCF будет содержать дополнительные данные, которые необходимо снова обновить в таблице SQL.

Например, в таблице есть 6 столбцов, а именно primaryKeyColumn,columnA, columnB, columnC, columnD и columnE.

Запрос WCF будет содержать данные из столбцов A, B и C.
Ответ службы будет содержать данные для всех 5 столбцов.
Данные столбцов D и E должны быть обновлены для этой строки в таблице.


Я думал о том, чтобы реализовать это с помощью службы Windows. Чтобы повысить производительность, я думаю о реализации многопоточности в этом решении.

Может ли кто-нибудь помочь мне в этом ? Я никогда раньше не использовал многопоточность в службе windows. Каковы риски ?

Что я уже пробовал:

Я создал службу windows, которая опрашивает таблицу базы данных SQL каждые 15 секунд,получает первую строку в зависимости от определенного условия , создает запрос на службу WCF, вызывает службу WCF, обновляет данные в таблице SQL на основе ответа.
Я еще не реализовал многопоточность.

1 Ответов

Рейтинг:
1

Midi_Mick

Служба windows в основном имеетбыть многопоточным, если он хочет вообще что-либо делать. Основной шаблон (большая часть которого заглушается при создании службы Windows) заключается в том, что основной поток обрабатывает команды из контроллера службы (запуск, остановка, пауза и т. Д.). Обычно при выполнении команды «Пуск» вы запускаете поток, ожидающий какого-то IPC от вашего приложения. В это ожидание также включены сигналы от основного потока для приостановки или остановки службы. Когда IPC проходит, в зависимости от типа обработки, задействованной в команде, вы можете либо обработать команду в этом потоке (если он быстрый), либо запустить другой поток для обработки команды (если возможно получить другую команду до первая - законченная обработка).

Применяются все обычные правила потоковой передачи-прерывание обработки, защита данных и т. д. Единственное, о чем вам не нужно беспокоиться, - это маршалинг в поток пользовательского интерфейса, так как его нет.