What does the Loop do. If it is a processor intensive operation, I would recommend putting this on a separate thread. I am not sure which version of .NET you are using, but if it .NET 2.0 and above, there is a component called backgroundWorker component, that will help in achieving what you want. Check out MSDN, they have nice sample too that has the similar kind of code.