На мой взгляд, деструктор действителен.
Принудительное завершение потока неверно.Кроме того, создание исключения в деструкторе может уничтожить все приложение.Однако, пожалуйста, не игнорируйте контекст.
Мы говорим о прокси-объекте, который оборачивает поток.Если такой компонент работает, его уничтожение сравнимо с уничтожением работающего потока.Прокси должен быстро потерпеть неудачу и сообщать о таком нарушении, а не манипулировать им.Кроме того, это сторонний компонент, который не знает намерений разработчика приложения.
Полагаю, вы не согласны со мной;в противном случае у нас не было этого разговора.Давайте посмотрим, какие есть альтернативы.
Отмена задачи и корректное завершение потока, сообщение об исключении отсутствует. При таком подходе мы предполагаем намерение разработчика,Если разработчик допустил ошибку, он или она может никогда не узнать, пока не станет слишком поздно.Приложение будет иметь непредвиденное поведение, и очень сложно выяснить источник проблемы.
Игнорирование запущенного потока и уничтожение компонента в любом случае, без вызова исключения. Похоже на превращение детерминированной машины в недетерминированную.Нужно ли нам даже обсуждать это?
Просто вызывает исключение. Поскольку поток все еще работает, переменные и трассировка стека могут содержать ошибочные состояния, что делаетотладка намного сложнее.
Я считаю, что нам всем нравится обнаруживать ошибки на ранней стадии разработки и предлагать нашим клиентам надежное и стабильное приложение.Должны ли мы прекратить это делать, потому что для инструмента, который нам нужно использовать, нет действительного варианта использования?
Для чего-то всегда есть действительный вариант использования.Если я ошибаюсь, пожалуйста, просветите меня.