2014-11-20 2 views
1

я Gote следующий метод и я хочу передать возвращаемые значения метода dosleep:Task.Factory.StartNew Передача Возвращаемые значения

static void Main(string[] args) 
{ 
    var t1 = Task.Factory.StartNew(() => dosleep(2000)); 
    var t2 = Task.Factory.StartNew(() => dosleep(1000)); 
    Task.WaitAll(t1,t2); 
    Console.WriteLine("All Done in {0} milliseconds!"); //t1+t2 here!! 
} 

public static int dosleep(int Milliseconds) 
{ 
    System.Threading.Thread.Sleep(Milliseconds); 
    Console.WriteLine("Task finished"); 
    return Milliseconds; 
} 
+0

вы всегда будете иметь только t1 и t2? или это динамика? – Nzall

+0

Цель состоит в том, чтобы просто добавить общее количество мс всех задач, как в ответе @ Стилгара, или найти общее количество времени, прошедшее во время 'Task.WaitAll'? Я., вы ожидаете, что результат будет ~ 2000 мс или ~ 3000 мс? –

+0

@DavidPeden это про передачу значений, миллисекунды всего лишь пример – fubo

ответ

5

Используйте Result свойство объекта Task

Console.WriteLine("All Done in {0} milliseconds!", t1.Result + t2.Result); 
+0

hm ok теперь это очевидно - спасибо – fubo

Смежные вопросы