У меня есть служба Windows, которая использует модель очереди производителей/потребителей с несколькими рабочими потоками, обрабатывающими задачи с очереди. Эти задачи могут выполняться очень долго, в течение нескольких минут, если не часов, и не включают циклы.
Мой вопрос - это лучший способ справиться с остановкой службы, чтобы изящно завершить обработку этих рабочих потоков. Я прочитал в другом вопросе qaru.site/info/27770/..., что использование thread.Abort() является признаком плохого дизайна, но кажется, что для метода OnStop() предоставляется только ограниченный количество времени до завершения обслуживания. Я могу сделать достаточную очистку в catch для ThreadAbortException (нет опасности несогласованного состояния), поэтому вызов thread.Abort() в рабочих потоках кажется мне удобным. Это? Каковы альтернативы?