Mit System.Timers.Timer machst du schon mal deinen Zeitintervall
Dann brauchst du einen Zähler und den Text:
Nach dem ersten Elapsed gibt du den Char vom Text an der Position 0(zähler = Position) aus und erhöhst den Zähler um 1. dann. Nach dem 2. elapsed gibst du Char an der Position 1 aus und erhöhst den Zähler wieder um 1 ...
Solange bis i < text.Length nicht mehr zutrifft und dann beendest du den Timer...