나는 너무 단순해서 내게서 나를 몰아 내게하는 뭔가에 집착했습니다.작업 속성 선언 및 대기 중
물론Task T1 { get; set; }
public async Task CreateAndAwaitAsync()
{
T1 = new Task(() => {
// time consuming work like:
System.Threading.Thread.Sleep(1000);
}
await T1;
}
람다 및 방법의 몸 (단지 예를 위해 다음과 같습니다
내가 어떤 시점에서 작업을 선언하고 나중에를 실행해야, 나는 생각 내가 말했듯이 나중에 실행해야한다.) 그러나 무엇을하더라도, await T1
으로 나는 람다에 그것을 만들 수 없다! 나는 무엇이 없는가 ?? 이미 몇 년 동안 비동기식 패러다임을 사용하고 있었기 때문에 어리 석다는 생각이 들었습니다.
작업을 시작하지 않았습니다. '기다리는'당신을 위해 그것을 시작하지 않습니다. 그리고 만약 당신이 그것을 시작하고 싶지 않다면 - 그냥 기다리지 말라 - 돌아온 그대로 (그리고 메소드에서 async 키워드를 제거하십시오). – Evk
'Task' 생성자를 사용하지 마십시오. CPU 바운드 작업을 대기 행렬에 넣고 싶다면'T1 = Task.Run (() => ....' – JSteward
@JSteward를 사용하십시오. 바로 작업이 바로 시작되기 때문에 그렇게 할 수 없습니다! 다른 작업을 시작해야합니다. 순간과 다른 곳에서 내가 선언 할 때와 장소가 다를 것입니다. – Shockwaver