Senti, ma perché non farla semplice semplice e lasciare perdere il BackGroundWorker, che è utilissimo ma non mi sembra affatto necessario in questo caso?

Scusa se non commento il tuo listato, dato che scrivo in VB.NET, ma perché non inserire una variabile a livello di classe:

Dim FlagEsci as Boolean

ed un Button, che premuto porta FlagEsci a True?

Dopodiché nel ciclo di lettura dei files scriverai:

Application.DoEvents
If FlagEsci then Exit Sub (Exit Do, Exit For o quello che sarà + acconcio)

ed il ciclo dovrebbe interrompersi senza nessun BackGroundWorker.
.