I have finished a program, and it does what I want it to do, but I feel I am "doing it wrong", even though it's seemingly efficient enough. Do Work += new Do Work Event Handler(background Worker_Do Work); background Worker1. Since your code basically just walks down the length of the string of characters, I modified this version to use a more efficient private void background Worker_Do Work(object sender, Do Work Event Args e) { var obj = (Background Worker)sender; string alphas = e.