25

기다려야 할 작업 목록이 있습니다. 나는 기다리고있어.

    await TaskEx.WhenAll(MyViewModel.GetListOfTasks().ToArray());

MyViewModel.GetListOfTasks ()는 작업 목록을 반환합니다.

    var tasksList = new List<Task>();
    foreach (var item in Items)
    {                
        tasksList.Add(item.MyTask());
    }

지금, 나는 즉시 완료 될 거짓 작업을 반환하고 싶습니다. 그러나 TaskEx.WhenAll은 영원히 기다릴 것입니다.

    public Task<bool> MyTask()
    {
        return new Task<bool>(() => false);
    }

어떻게하면 즉시 완료 될 Task를 반환 할 수 있습니까?


  • 이 서비스를 다른 서비스 계층과 조롱해야합니까? - David L
  • @DavidL 그래, 그게 내가 할 일이지만, 현재는 새로운 아키텍쳐로 노는 순간인데, 처음에는 인형으로 채우고 싶다. 구현에 착수했다. - Vitalii Vasylenko
  • return Task.FromResult (false); - Fabio Marcolini
  • @FabioMarcolini 감사합니다, 그 작품! wp7의 경우 TaskEx.FromResult (false)를 반환합니다. 그러나 당신은 꼼짝 못하게합니다. - Vitalii Vasylenko
  • 할 일을 만들지 만 실행하지 않습니다. - user2674389

2 답변


61

.NET 4.5에서는 FromResult를 사용하여 작업 결과를 즉시 반환 할 수 있습니다.

public Task<bool> MyTask()
{
    return TaskEx.FromResult(false);
}

http://msdn.microsoft.com/en-us/library/hh228607%28v=vs.110%29.aspx


Windows Phone 8.1 이상에서는API가 병합되었습니다.다른 플랫폼과 일치하도록

public Task<bool> MyTask()
{
    return Task.FromResult(false);
}


  • 프레임 워크의 최종 릴리스 이후 : return Task.FromResult (false); - uli78
  • @ uli78이 질문은 특히 Windows 전화 7,하지만 큰 포인트! 내 답변이 업데이트되었습니다. 감사합니다. - David L

8

.NET 4.5 이전에는 다음을 사용할 수 있습니다.TaskCompletionSource<TResult>시뮬레이션하기FromResult방법.

public static Task<TResult> FromResult<TResult>(TResult result)
{
    var completionSource = new TaskCompletionSource<TResult>();
    completionSource.SetResult(result);
    return completionSource.Task;
}


연결된 질문


관련된 질문

최근 질문