2013-09-16 6 views
12

C#에서 전체 await/async 패턴을 완전히 혼동합니다.비동기 메서드를 기다리는 중

폼 앱이 있는데, 처리하는 데 20 초가 걸리는 메서드를 호출하고 싶습니다. 따라서 나는 await로하고 싶다. 올바른 방법은 async Task으로 표시하는 것이지만 어쨌든 await을 사용하지 않으므로 경고 메시지가 나타납니다.

Google은 TaskCompletionSource<T>을 반품하는 방법을 공개했지만 반환 유형이 없으므로 무효입니다.

await을 사용하여이 방법을 어떻게 호출 할 수 있습니까?

+3

'async'는 백그라운드 스레드에서 메소드를 실행하지 않습니다. 도움이 될만한 ['async' /'await' 소개] (http://blog.stephencleary.com/2012/02/async-and-await.html)가 있습니다. –

답변

35

는 다음과 같이 메서드를 호출 :

await Task.Run(() => YourMethod()); 

당신이 당신을 위해 awaitable 작업을 생성 Task.Run 방법을 사용합니다.

+0

Task.Run은 기본 UI 스레드에서 "YourMethod"를 실행하거나 새 스레드를 만듭니다. (예 : WinForms) – harag

관련 문제