Попробуйте использовать backgroundworker .
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
//Helper thread: Long during task
}
private void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//We're in the main thread: Show your messagebox
}