Have you thought about BackgroundWorker Class,
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += bg_DoWork;
bg.RunWorkerCompleted += bg_RunWorkerCompleted;
Then In methods you can do like
void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
void bg_DoWork(object sender, DoWorkEventArgs e)
{
}