У меня есть служба Windows, которая иногда падает и останавливается при возникновении необработанного исключения ThreadInteruptedException.Основная функция этого сервиса - запускать синхронизацию каждые x минут (пользовательский промежуток времени).Я только один раз использую метод Thread.Interrupt () дважды (потому что знаю, насколько это может быть грязно) -
Клиент может подключиться через TCP-соединение, но если данные отправляются клиенту слишком быстрочтобы справиться с этим, он может отправить сигнал «паузы» обратно в службу, а затем возобновит работу, когда все данные будут обработаны (это могут быть беспроводные устройства и несколько клиентов, работающих на разных скоростях, поэтому я не сталне хочу оставлять все это в буферах TCP).Затем Pause переводит нить в спящий режим, а возобновление прерывает это и продолжает.
Другое использование происходит в аналогичной ситуации, когда соединение TCP первоначально подключается.
Однако я позволил этомуслужба запущена и это исключение выдается даже когда я не подключаю никаких клиентов!Соединения TCP не устанавливаются, и поэтому ни один из этих методов прерывания не достигается!Я поместил операторы try, чтобы перехватить это исключение вокруг каждого Thread.Sleep () в сервисе, но это исключение все еще вызывается!
Я уверен, что упускаю что-то действительно очевидное, но это просто невыскочил на меня, и я искал несколько дней!
- Кто-нибудь когда-либо сталкивался с этим раньше?
- У кого-нибудь есть дешевые альтернативы сну и прерыванию потока (не во время(пауза) продолжить;)
- Кто-нибудь знает простой способ отладки такого необработанного исключения?Я даже не вижу в стеке, чтобы выяснить, откуда он исходит!
- Может ли какой-либо другой метод вызвать исключение ThreadInterruptedException?Или другие методы могут привести к прерыванию спящего потока?
Заранее спасибо