Una mejor manera de esperar a que una variable cambie de estado en VB.Net

Tengo un bucle que pasa por una serie de valores. Con cada valor iterado, una página se carga en un control del navegador web (con el valor pasado como parámetro) y cuando la página se carga y se lee, el bucle debe ir al siguiente valor en la lista y continuar hasta que se procesen todos los valores. Necesito una forma de pausar el procedimiento mientras el sitio web se está cargando de forma asíncrona y luego reanudarlo una vez que se complete el proceso de carga / lectura de la página.

Lo que estoy haciendo es usando algo como esto, donde "ReadingInProgress" es una variable global:

      ReadingInProgress = True
      wb.Navigate("http://mywebsite.com/mypage.aspx" & c)

      While ReadingInProgress
        Application.DoEvents()
      End While

El evento "DocumentCompleted" del control webrowser configuró "ReadingInProgress" como falso, lo que hace que el ciclo while salga y reanude el procedimiento. Esto funciona, pero me doy cuenta de que pone una tensión en la CPU. ¿Hay una forma mejor y menos intensiva de CPU para hacer esto?

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta