Вы можете перехватить событие Закрытие в главном окне следующим образом -
<Window Closing="Window_Closing">
И в вашем случае установите e.Cancel в значение true, чтобы остановить закрытие окна. В вашем случае вы можете сохранить какое-то поле, которое будет установлено, как только вы получите уведомление от клиента, что он сделал с cleanUp, и теперь можно безопасно закрыть окно. Просто установите это значение на e.Cancel
private void Window_Closing(object sender, CancelEventArgs e)
{
e.Cancel = true;
}