Es wird dir wohl nichts anderes übrig bleiben, als wie in jeder Schleife in der er sich aufhängen könnte, eine globale Abbruchbedingung reinzumachen.
Sprich du deklarierst z.B. in deiner Klasse (Form oder vlt. auch völlig global) eine Boolean-Variable mit dem Namen "DoCancel". In einem Abbruch-Button setzt du DoCancel auf TRUE und prüfst in jeder Schleife "if DoCancel then break".