У меня есть форма Windows и класс с двумя простыми методами, которые выполняются рекурсивно недетерминированным способом (это означает, что неизвестно, какая рекурсия будет вызываться, обе могут вызывать другие) ... Теперь во время этого есть некоторые моменты рекурсия, при которой я хочу приостановить выполнение и подождать, пока пользователь нажмет кнопку «Следующий шаг». Только после нажатия кнопки рекурсивные функции могут продолжаться. Класс работает в отдельном потоке, поэтому он не блокирует пользовательский интерфейс.
Во время этой паузы Форма просто получит значение из класса и отобразит его в списке. Затем после нажатия кнопки рекурсия продолжается до следующей паузы (). Мне это нужно, чтобы пользователь мог шаг за шагом увидеть, что происходит в рекурсии. Также мне нужно иметь возможность поставить Pause () в любом месте рекурсивного метода (даже несколько раз), не вызывая побочных эффектов ...
Единственный способ, который мне приходит в голову, - это вызвать метод Pause (), в котором цикл проверяет какой-то заблокированный флаг и затем некоторое время спит (кнопка затем установит флаг), но у меня были некоторые неудачные опыты с Thread .Sleep () в Windows Forms (блокировка интерфейса), поэтому я смотрю на другие варианты.
Есть ли какой-нибудь чистый способ сделать это?