Now I understand. I was having a hard time understanding that you were passing the control back to the first thread using the report progress line. Then the directcast line is actually disposing the control itself. Sometimes I lose track of things when looking at something new. Thank you for taking the time to explain it again.

I have it worked into the code and it seems to be working. I need to use the program for a bit to see if it still has any problems. But for now that seems like it did the trick. I'll let it run for a bit to be sure.