어떤 시나리오에서 사용하고 싶습니까?
public async Task AsyncMethod(int num)
대신에
public async void AsyncMethod(int num)
당신의 진행 상황을 추적 할 수 있도록 작업을해야 할 경우 내가 생각할 수있는 유일한 시나리오입니다.
또한, 다음과 같은 방법으로, 비동기 및 await를 키워드는 불필요하다?
public static async void AsyncMethod2(int num)
{
await Task.Factory.StartNew(() => Thread.Sleep(num));
}
Thread.Sleep
당신의 작업을 당신이해야 await Task.Delay(num)
하는 대신
Task.Delay
는 아닙니다Task.AsyncDelay
async void
대신 으로 선언되었습니다 async Task
. 메소드가 실행을 완료하기 전에 컨트롤러 멤버로 선언 된 Entity Framework 컨텍스트 오브젝트를 사용 중이므로 메소드가 충돌했습니다. 프레임 워크는 메소드 실행이 완료되기 전에 컨트롤러를 배치했습니다. 메서드를 비동기 작업으로 변경했는데 효과가있었습니다.
Foo()
될 것입니다FooAsync()
.