나는 뭔가를 이해하지 못한다고 생각합니다. 나는 그것을 생각했다.Task.Yield()
새로운 스레드 / 컨텍스트가 작업을 위해 시작되도록 강요하지만이 답을 다시 읽는다.그것은 단순히 메서드를 비동기로 만듭니다. 그것은 여전히 같은 맥락에있을 것입니다.
교착 상태가 발생하지 않고 여러 작업을 병렬로 생성하고 실행하는 올바른 방법은 asp.net 프로세스에서 무엇입니까?
즉, 다음과 같은 방법이 있다고 가정합니다.
async Task createFileFromLongRunningComputation(int input) {
//many levels of async code
}
그리고 특정 POST 경로에 도달하면 위의 방법을 동시에 3 번 실행하고 싶습니다.즉시 반환, 세 가지 모두 완료되면 기록하십시오.
나는 내 행동에 이런 것을 넣어야한다고 생각한다.
public IHttpAction Post() {
Task.WhenAll(
createFileFromLongRunningComputation(1),
createFileFromLongRunningComputation(2),
createFileFromLongRunningComputation(3)
).ContinueWith((Task t) =>
logger.Log("Computation completed")
).ConfigureAwait(false);
return Ok();
}
무엇이 들어가야하는지createFileFromLongRunningComputation
? 나는 생각했다.Task.Yield
맞았지 만 분명히 그렇지 않다.
ConfigureAwait
네가 실제로 그렇게하지 않으면 무의미하다.await
그만큼Task
. - Servy