비동기 함수를 만들고 싶습니다.async
이렇게 :
public async static void something(){
}
반환 유형이 다음과 같은지 확인할 수 있습니다.void
. 이 함수는 차단없이 비동기 적으로 호출되기를 원합니다. 반환은void
so noawait
필요합니다.
하지만 Visual Studio 2012에서는 이것을 컴파일 할 수 없습니다.await
?
함수를 만드는 샘플을 조언 해 주시겠습니까async
사용하지 않고await
.
어쩌면 당신이 오해 한 것 같아요.async
않습니다. 경고는 정확히 맞습니다 : 당신이 당신의 방법을 표시한다면async
하지만 사용하지 마라.await
어디서나, 당신의 방법비동기가되지 않습니다.. 이 함수를 호출하면 메서드 내의 모든 코드가 동 기적으로 실행됩니다.
또한 사용을 피하려고 시도해야합니다.async void
메서드를 사용하면 예외 처리가 어렵습니다.
async
메서드가 호출 될 때 메서드 자체를 비동기로 만들거나 그렇지 않으면 만들지 않습니다.await
메소드 내부 어디에서든지? 위의 샘플처럼, 내가 전화하면something()
, 그것은 현재 스레드를 차단합니까? - Eric Yinsomething()
(그리고 아무도await
), 스레드를 차단합니다. 경고가 귀하에게 말하고자하는 바입니다. - svickasync
당신의 방법을 마 법적으로 차단하지 못하게하는 것이 아닙니다. 다른 스레드에서 일부 코드를 실행하려면 다음을 사용하십시오.Task.Run()
. - svickTask.Run()
다른 스레드에서 실행합니다. - svick
async
방법await
몸에 - Gennady Vanin Геннадий Ванин