Thanks for the info , will keep it in mind. the issue was that i was calling subs/functions in sequence with BackgroundWorker1.Dowork which got evaluated at the same time . so i had to call the other subs from the runWorkerComplted method to ensure they evaluate after the process is complete...