ciao, ci sono due strade. La prima è se usi VB.NET in C# e 'vergognoso' usarla. ;-)
Basta che dopo la tua istruzione, inserisci un Application.DoEvents e come per magia qualcosa si sblocca.
Se pero' questa operazione è composta da un giganteco Loop o simile, non basta questo trucchetto, e quindi devi usare l' asyncrono, insomme un po' come usare Ajax.
Io ti do il link in C# preso dal blog di mauro minella:
Delegati in C#
In questo modo puoi anche gestire una piccola window modale con una gif stile progressbar, per 'ingannare' il tempo.
E' piu' complesso ma per lo meno non rischi di inchiodare la macchina e non sapere a che punto sei della tua routine.
;-)