program story

Await 연산자는 Async 메서드 내에서만 사용할 수 있습니다.

inputbox 2020. 11. 12. 08:12
반응형

Await 연산자는 Async 메서드 내에서만 사용할 수 있습니다.


Visual Studio 2012 내에서 새로운 .NET 비동기 기능을 테스트하는 간단한 프로그램을 만들려고합니다. 일반적으로 BackgroundWorkers를 사용하여 시간이 많이 걸리는 코드를 비동기 적으로 실행하지만 때로는 비교적 간단하지만 비용이 많이 드는 작업이 번거로운 것처럼 보입니다. . 새로운 비동기식 수정자는 사용하기에 좋을 것 같지만 불행히도 간단한 테스트를 진행할 수없는 것 같습니다.

다음은 C # 콘솔 애플리케이션의 코드입니다.

static void Main(string[] args)
{
    string MarsResponse = await QueryRover();
    Console.WriteLine("Waiting for response from Mars...");
    Console.WriteLine(MarsResponse);
    Console.Read();
}

public static async Task<string> QueryRover()
{
    await Task.Delay(5000);
    return "Doin' good!";
}

MSDN에서 몇 가지 예제를 확인했는데이 코드가 작동해야하는 것처럼 보이지만 대신 "await QueryRover ();"가 포함 된 줄에 빌드 오류가 발생합니다. 내가 미쳐가는 건가요 아니면 뭔가 수상한 일이 일어나고 있나요?


만 사용할 수 있습니다 awaitasync방법, 그리고 Main수 없습니다async .

당신은 당신의 자신의 사용해야합니다 async호환 컨텍스트 호출을 Wait반환에 TaskMain방법, 아니면 그냥 반환 무시 Task하고 단지에 대한 호출에 차단 Read. 참고 Wait에서 예외를 포장합니다 AggregateException.

좋은 소개를 원하면 내 async/ await소개 게시물을 참조하십시오 .

참고 URL : https://stackoverflow.com/questions/11836325/await-operator-can-only-be-used-within-an-async-method

반응형