Я разработал службу Windows для обработки файлов, записи которых будут храниться в базе данных. Когда служба Windows находит файл, он создает поток и назначает каждый файл одному потоку. Я не использовал пул потоков. Я хотел знать, когда остановлена служба Windows, как определить, сколько потоков запущено и завершены ли они. Если все потоки выполнены, то служба Windows может быть успешно остановлена. Служба Windows Otherwis должна ждать, пока все потоки будут выполнены или прерваны. Как это реализовать.Windows Service And Thread Programming .NET
ответ
Вы всегда можете сохранить Thread
объектов в списке и управлять ими оттуда.
Что-то вроде:
List<Thread> workerThreads = new Lits<Thread>();
Tread workerThread = new Thread(...);
workerThreads.Add(workerTread);
workerThreads.Start();
Вы должны держать список запущенных потоков. Вы можете добиться этого, добавив каждый новый поток в список (перед запуском), а рабочий метод удаляет поток из списка (напрямую или путем создания события на объекте контроллера).
В принципе, вам нужно заботиться об этом самостоятельно.
Надеюсь, это поможет
Когда служба окон остановлена?
Когда он закрыт с помощью SCM, вы можете проверить OnStop событие для отслеживания заключительного мероприятия
как определить, сколько потоков выполняются и являются ли они в комплекте? Просто сохраните каждый поток, который вы создали в массиве или списке, и чтобы проверить, работает ли поток, вы можете установить логическую переменную в конце функции потока.
Чтобы закрыть службу при определенных условиях, вы можете использовать метод Environment.Exit.
- 1. android Thread and Service
- 2. Приостановка Windows Service thread?
- 3. STA thread for windows Service
- 4. Windows Service Installer .NET
- 5. C# Windows Service and Remoting
- 6. Windows service and design pattern
- 7. Qt Programming - QtConcurrence kill thread
- 8. .NET Windows Service - архитектурные решения
- 9. .NET Windows Service Имя пользователя
- 10. Windows thread sleep and wake from another thread
- 11. Invoke Windows Form Thread and Sleeping
- 12. Lock and thread Pool
- 13. .NET Windows Service необходимо использовать STAThread
- 14. HTML5 Canvas and Game Programming
- 15. wcf - .net 3.5 client and .net 4.0 routing service
- 16. WCF Service and Threading
- 17. Windows Mobile and Bluetooth programming SDK для загрузки
- 18. почему Windows Service crash?
- 19. Windows Application Programming & wxPython
- 20. windows batch file programming
- 21. Windows programming win32
- 22. Play framework, promises, non blocking thread programming
- 23. Spring Autowiring and thread-safety
- 24. .Net Service и Windows App одновременно?
- 25. Программно удалить Windows Service из .NET
- 26. Печать с Windows Service/C#. NET
- 27. .net windows service как государственный сервер
- 28. Относительный путь с .Net Windows Service ..?
- 29. .Net Windows Service и FileSystemWatcher issue
- 30. Передача строк в .NET Windows Service
Вам не нужно добавлять логическое значение. Просто проверьте состояние потока. Он уже говорит, если поток остановлен или нет. –
Я знаю, что вы можете проверить свойство ThreadState, но это вызывает много проблем, если вы полагаетесь на него; проверьте это http://stackoverflow.com/questions/1010030/what-value-is-the-threadstate-property –