Мониторинг. Можно гуглить 4 golden SRE signals для понимания. Главное - это понимание что показатели являются не одномоментными, а измеряются на интервалах времени.
В общем-то это получается слегка сторонний кусок, но System.Diagnostics, OpenTelemetry и другие средства инструментирования позволяют-таки тащить метрики. Не внося изменений в сам сутевой код приложения.
По нажатию - дисэйблить кнопку [и возможно другие связанные элеменыт ui + разлочивать/показывать другие] и потом пускать в отдельном потоке что-то долгое.. по его завершению - разлочивать.
Классика: две кнопки "пуск" и "стоп" + прогрессбар
IsEnabled у кнопок цепляется за булево поле IsProcess (инверсно у пуск и прямо у стоп)
ProgressBar - виден только когда IsProcess == true