onestamente al momento non saprei da dove iniziare per il multithread...

risolto con un semplicissimo

Dim StartTime as Date = Now
Do
Application.DoEvents()
Loop Until (Now - StartTime).TotalMilliseconds > 12500

dove 12500 è un esempio di ritardo in millisecondi

l' unica cosa che mi lascia perplesso è che, cronometro alla mano, il ciclo sballa di alcuni secondi... boh, il problema principale era di non bloccare il programma, quella è risolta, la precisione del ritardo non è assolutamente fondamentale