Du solltest hin und wieder
Application.DoEvents aufrufen oder gleich einen
BackgroundWorker einsetzen, dann wird sich Windows auch nicht beschweren, dass dein Programm scheinbar hängen geblieben ist

.
PS: Von wie viel Text reden wir hier überhaupt? Ich wette, dass die Interaktion mit den Controls 99% der Zeit frisst. Führe
PerformStep nur bei jedem hundertsten Zeichen aus und schreibe nicht direkt in
ausgabe.Text, sondern erst einmal in einen
StringBuilder.
PPS: Das dürfte die dichteste Kommentierung sein, die ich jemals gesehen habe

.