비동기가 아닌 메소드가 있다고 가정하고Task
(정의가 비동기 구현을 위해 의도 된 인터페이스에서 나온 것이기 때문에)
public Task DoWorkAsync(Guid id)
{
// do the work
return ...;
}
무엇이 가장 좋은 물건입니까? 내 현재 옵션 :
return Task.Yield();
return Task.FromResult<object>(null);
// any of the other but cached in a static field and reused.
돌아올 수 없다.Task.Yield()
, 그것은 아니에요.Task
그러나YieldAwaitable
와 함께 사용하기 위해await
, 그리고 그것은 실제로 비동기를 도입합니다.자세한 내용은 여기에).
나는 사용한다Task.FromResult(Type.Missing)
이 목적을 위해. 아마도, 가장 효율적이지만 문서화되지 않은 옵션은Task.Delay(0)
,정적 인 완료 작업을 반환합니다..
Task.Delay(0)
. 원한다면 캐시 할 수 있습니다. - noseratioTask.FromResult<object>(null)
, .NET 팀은 선호하는 경향이 있습니다.Task.FromResult(0)
. 하지만 그 중 어느 것도 캐시되지 않습니다. - Stephen Cleary0x4000
"처분하지 마십시오"는 항상 의미 할 것입니다. 따라서 생성 및 캐시new Task(false, (TaskCreationOptions)0x4000, System.Threading.CancellationToken.None)
당신 자신... - Knaģis
Microsoft.net 4.6에서 Task 클래스에는이 목적을위한 정적 속성이 있습니다.
Task.CompletedTask
https://msdn.microsoft.com/en-us/library/system.threading.tasks.task.completedtask(v=vs.110).aspx