Вы можете попробовать Task в .NET 4.0 System.Threading.Tasks
После вызова StartNew
основной поток продолжает параллельно делать то, что вы хотите, затем один раздостигает точки, где в главном потоке требуется возвращаемое значение, основной поток блокируется до тех пор, пока результат не будет возвращен методом, вызванным в другом потоке.Если результат уже возвращен основным потоком, достигнет WriteLine, блокировка отсутствует.
Task task = Task.Factory.StartNew(SomeMethod);
Console.WriteLine(task.Result);
public static string SomeMethod()
{
return "Hello World";
}
ИЛИ
Task task = Task.Factory.StartNew(() => { return "Hello World"; } );
Console.WriteLine(task.Result);
Проверьте этот блог на наличие более интересных примеров.*
РЕДАКТИРОВАТЬ
После нижеследующего (довольно разочаровывающего) обсуждения мне пришлось внести изменения в этот ответ, чтобы обосновать правильный ответ.
в .NET Framework 4, задачи являются предпочтительным API для написания многопоточного, асинхронного и параллельного кода. Проверка MSDN