편집 : WebClient.DownloadFileAsync
은 "비동기"로 끝나지 만 작업을 반환하지 않습니다. Event-based Asynchronous Pattern
의 일부이므로 내 답변과 관련이 없습니다. 이것은 : 비동기 작업이 완료되었을 때를 알기 위해서는 WebClient.DownloadFileCompleted
이벤트에 가입해야합니다.
var client = new WebClient();
var uri = new Uri(address);
client.DownloadFileCompleted += (sender, e) => Console.WriteLine("Finished");
client.DownloadFileAsync(uri, "Hamsters.txt");
원래 답 : : WebClient.DownloadFileAsync
반환 당신이 기다리고해야 할 작업 예를 들어. 같은 :
await WebClient.DownloadFileAsync(...)
DownloadFileAsync
이다는 비동기 작업을 발사하고 작업이 끝난 완료 작업을 반환합니다. await
은 해당 작업이 비동기식으로 끝날 때까지 기다리는 것을 의미하므로 결과가 DownloadFileAsync
일 때 코드가 실행됩니다.
동기식 DownloadFile
은 호출 한 스레드를 차단합니다. UI 스레드 인 경우 그렇다면 앱이 응답하지 않습니다. UI 스레드가 아니라면 여전히 응답 성이 좋지만 확장 성이 떨어집니다 (즉, 작업을 수행하는 대신 스레드가 대기하므로 응용 프로그램 전체가 같은 스레드로 처리 할 수 있습니다)
불행히도 VS2010에서는 async/await와 ['Bcl.Async'] (https://www.nuget.org/packages/Microsoft.Bcl.Async)를 사용할 수 없습니다. 'DownloadFileTaskAsync'] (http://msdn.microsoft.com/en-us/library/hh159424 (v = vs.110) .aspx) API). 그럼에도 불구하고 [EAP-to-Task 패턴] (http://blogs.msdn.com/b/pfxteam/archive/2009/06/19/9791857.aspx)을 사용하여 코드를보다 체계적으로 구성 할 수 있습니다. – Noseratio