Ma hai idea di cosa fai e dei codici che scrivi o stai copiando codici dal web?
I timer sono del tutto inutili in quel contesto: ci sono gli eventi per sapere quando il WebBrowser ha caricato la pagina.
Quel codice carica una lista di proxy da un file di testo all'interno di una lista in memoria, ma non carica mai i proxy sulle impostazioni di Internet Explorer.
Per impostare il proxy su Internet Explorer devi invocare l'API di Windows `InternetSetOption()` con i parametri adeguati dalla lib wininet. MSDN spiega quella funzione e PInvoke.net può aiutarti a invocarla dal .NET.
Il fatto però è che resta comunque stupido utilizzare il controllo WebBrowser nel tuo caso quando ti basta usare `HttpWebRequest`.
La classe HttpWebRequest funziona come qualsiasi altra classe .NET ovviamente. La istanzi, setti la proprietà `Proxy` e qualsiasi altra proprietà ti serve, e poi chiami le funzioni che ti servono.
Qui:
https://msdn.microsoft.com/en-us/library/czdt10d3.aspx in fondo alla pagina trovi anche un esempio che mostra come creare una HttpWebRequest e impostarne il proxy.
Se non sai usare le classi e gli oggetti e non hai idea di cosa sia la programmazione orientata agli oggetti è un altro problema: non dovresti nemmeno programmare in .NET senza conoscere la programmazione object-oriented - in tal caso, dovresti invece prendere un manuale .NET e studiarlo.