Originariamente inviato da ybla82
potresti fare così:
nell'if del primo thread ci metti un return.

poi all'interno del thread chiami il metodo download preceduto da if chackbox4.checked.

In questo modo il primo thread esegue tutte e due le funzioni in ordine ( se entrambe le checkbox sono checkate), oppur eesegue solamente il secondo thread nel caso solo una checkbox sia checkata.

Per il secondo problema prova a chiamare l'invoke sulla form stessa:
codice:
this..Invoke(new BarDelegate(UpdateBar));
Ho fatto come hai detto e ora il primo punto funziona. Grazie
Il problema è il secondo perchè l'invoke non posso farlo da form perchè deve avanzare man mano che il thread secondario avanza.
codice:
thread = new Thread(new ThreadStart(pathping));
thread.Start();
Praticamente l'invoke è contenuto nel thread.