Я думаю, что самое простое решение - просто вызвать событие из формы, как только задача будет выполнена.
void RunTask()
{
Form form = new Form();
form.TaskCompleted += new EventHandler(form_TaskCompleted);
form.Show();
}
void form_TaskCompleted(object sender, EventArgs e)
{
object result = ((Form)sender).GetResult();
}
Редактировать: Конечно, вы захотите удалить форму и отцепить это событие, как только оно будет выполнено.завершено и т.д ..