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.
.