puoi provare con un timer. Imposti il timeout a 30sec e quando scatta l'evento elapsed controlli quanti bytes hai scaricato.

Verifica che il tutto sia thread-safe (usa variabili globali e statiche) e magari puoi stoppare il download sempre nell'evento elapsed.


Questa è la prima idea che mi è venuta, magari ci sono altre soluzioni migliori