2012-07-04 3 views
11

그래서 내가 작업의로 프로그래밍하는 방법을 배우려고 노력하고있어 나는 운동하고 있어요 :Threading.Tasks.Task은 결과 ''에 대한 정의를 포함하지 않는 '

public static int ReturnFirstResult(Func<int>[] funcs) 
{ 
     Task[] tasks = new Task[funcs.Length]; 
     for (int i = 0; i < funcs.Length; i++) 
     { 
      tasks[i] = CreatingTask(funcs[i]); 
     } 
     return Task<int>.Factory.ContinueWhenAny(tasks, (firstTask) => 
                  { 
                   Console.WriteLine(firstTask.Result); 
                   return ***????***; 
                  }).***Result***; 
} 
private static Task CreatingTask(Func<int> func) 
{ 
     return Task<int>.Factory.StartNew(() => { return func.Invoke(); }); 
} 

난을주고있다을 배열을 실행할 Funcs의 경우, ideia는 수행 된 첫 번째 func의 결과를 반환합니다. 문제는 필드 결과를 사용할 수 없다는 것입니다.

내가 여기에 누락 되었습니까? 당신은 CreatingTask 방법에서 Task을 반환하고

답변

23

- 당신은 Task<int>를 반환하고 Task<int>[] 대신 Task[]tasks을 변경해야합니다.

기본적으로 Task은 결과를 생성하지 않는 작업을 나타냅니다. 반면에 Task<T>T 유형의 결과를 생성하는 작업을 나타냅니다. 귀하의 경우 코드 전체가 int이므로 모든 곳에서 Task<int>이 필요합니다.

+0

Jon, 고맙습니다. :) – RSort

관련 문제