io la posterei anche ma è piuttosto lunga...e coinvolge anche altre sub-routine (una decina).
intanto posso dirti che sono arci-sicuro che la routine sia terminata e il programma non sta eseguendo nulla.
uso una ventina di API...
e posso anche dirti che non è un problema che il programma assorbe troppa ram, perché a volte la form rimane bloccata quando il processo ha assorbito circa 30 MB di ram e a volte invece quando ne ha assorbita 200 MB non si blocca. e viceversa.
il programma è una form con caselle di testo, label e pulsanti, e un oggetto webbrowser.
è un programma che mi fa delle ricerche nei siti web, quindi lo tengo accesso da circa un'ora a 5-6 ore (per questo può arrivare ad assorbire 200 MB di ram)...
mano a mano che gira i siti web aggiorna il contenuto di alcune label con i risultati che mi interessano della ricerca.

ogni tanto elimino e annullo (=nothing) l'oggetto webbrowser e lo ricreo, tutto da codice.
ho provato anche a eliminare l'oggetto webbrowser quando è finita la routine, ma il form può lo stesso rimanere impallato.
ovviamente nel codice setto uguale a nothing tutte le variabili oggetto che uso, quando non le uso più...
a te non è mai capitato?