C # Задача, которая возвращает значение - PullRequest
6 голосов
/ 03 августа 2011

Я пытаюсь запустить функцию в задаче, но я делаю что-то не так.Вот пример:

var t = Task<int>.Factory.StartNew(() => GenerateResult(2));

static int GenerateResult(int i)
{ 
return i; 
}

В конце Console.WriteLine(t); Возвращает:

System.Threading.Tasks.Task`1 [System.Int32]

Я хочу, чтобы мне было 2. Что я здесь не так делаю?: /

Ответы [ 2 ]

13 голосов
/ 03 августа 2011

Вы печатаете созданный вами объект задачи.Результат см. .Result свойство:

Console.WriteLine(t.Result);

6 голосов
/ 03 августа 2011

Вам нужно использовать t.Result.

Например,

Console.WriteLine(t.t.Result);

Ваш код по сути выглядит так:

Task<int> t = Task<int>.Factory.StartNew(() => GenerateResult(2));

А когда вы пишете Console.WriteLine(t); вы на самом деле просто печатаете Task, а не integer.Чтобы получить доступ к результату, вам нужно добавить .Result.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...