У меня есть программа, которая будет анализировать исходный код. Он может рекурсивно пройти через каталог, чтобы найти все проекты, а затем рекурсивно пройти через проект, чтобы найти весь исходный код.
Я хочу создать кнопку отмены процесса, которая позволит пользователю остановить анализ кода. Я запускаю разбор кода в фоновом режиме. Я хочу иметь возможность наблюдать за отменой события.
Проблема состоит в том, чтобы выяснить, как отредактировать мой код, чтобы он проверял этот элемент и возвращался в GUI. Процесс синтаксического анализа идет несколькими методами.
В гораздо меньшем процессе я успешно использую поточно-ориентированный синглтон, в котором есть логическое значение, которое сообщает, была ли запрошена отмена, и прекращаю цикл, в котором он выполняется.
Как лучше всего добавить этот запрос на отмену в мой код?
РЕДАКТИРОВАТЬ: Вот идея, вдохновленная ответом Джона Сондерса.
Что если в моем потоке обработки запустится фоновый поток, который ожидает изменения Cancel Singleton, а затем сгенерирует исключение из этого процесса? Кажется ли это хорошей практикой? Это не работает, как задумано
РЕДАКТИРОВАТЬ 2: Ответ Джона Сондерса кажется лучшим на данный момент. Я просто брошу свое собственное исключение, когда пока что синглтон верен. Я буду ждать, чтобы увидеть, если какие-либо другие решения предлагаются