Non risolveresti in ogni caso il problema: qualsiasi operazione di durata medio/lunga avviata negli eventi si svolge nel contesto del thread primario dell'applicazione, quello che gestisce i messaggi in arrivo all'applicazione stessa, ivi compresi quelli che provvedono al refresh dell'interfaccia utente.

La soluzione a questo genere di problemi è ricorrere al multithreading, delegando ad un thread separato l'esecuzione di quelle operazioni che impiegano un certo lasso di tempo, lasciando il thread primario libero di gestire i messaggi (refresh, click, ecc.) ed eventualmente controllare l'andamento del thread secondario.

Ciao!