c# 비동기 다운로드

with Geen reacties

지정된 URI가 있는 리소스를 로컬 파일로 다운로드합니다. 이 메서드는 호출 스레드를 차단 하지 않습니다. 파일 다운로드가 취소되었는지 확인하려면 DownloadFileCompleted 콜백을 추가하고 이벤트를 확인합니다. 비동기 예제에 표시된 대로 취소된 값입니다. 다운로드StringCompleted 이벤트는 비동기 리소스 다운로드 작업이 완료될 때 발생합니다. DownloadString() 메서드는 지정된 리소스를 검색합니다. 이 메서드는 리소스를 다운로드하는 동안 차단합니다. 더 이상 콜백이 없으므로 해당 들여쓰기, 중괄호 및 괄호가 더 이상 필요하지 않습니다. 또한 ContinueWith에 대한 참조가 없으므로 읽고 이해하기가 훨씬 쉬운 코드가 생성됩니다. 사실, 다운로드 AndBlur 방법에 대해 변경해야 했던 대부분의 사항은 코드를 제거하는 것이었습니다.

추가 된 중요한 것은 작업을 반환하는 각 방법 앞에 기다리고 있는 키워드였습니다. 따라서 비동기를 사용할 뿐만 아니라 더 읽기 쉽게 읽을 수 있습니다. 그러나 비동기 키워드는 어떨까요? 우리는 정적과 무효 사이의 DownloadAndBlur 방법의 서명에 추가,하지만 정말 필요? 참고: downloadFile 메서드 내에서 대신 클래스의 리스너를 추가하는 것이 더 쉬우므로 전역 범위에 있는 클라이언트가 cancelDownload 및 downloadFile 메서드에서 사용할 수 있도록 노출됩니다. 스니펫을 테스트하려면 메서드를 단추 쌍의 작업으로 추가하기만 하면 됩니다. 참고: 비동기 메서드를 사용 하지만 잠시 동안 기본 스레드를 차단할 수 있습니다. 비동기 다운로드 자체가 DNS 이름(이 경우 “mysite.com”)을 확인하고 이 검사는 내부적으로 차단 기능을 통해 수행되기 때문입니다. 도메인 이름 대신 직접 IP를 사용하는 경우 DownloadFileAsync 메서드는 완전히 비동기가 됩니다. 이 예제에서는 모든 웹 사이트에서 로컬 디스크로 파일을 다운로드하는 방법을 보여 줍니다. 파일을 다운로드하는 방법은 WebClient 클래스와 그 방법 DownloadFile을 사용하는 것입니다. 이 메서드에는 두 개의 매개 변수가 있으며, 먼저 다운로드할 파일의 URL이고 두 번째 매개 변수는 파일을 저장할 로컬 디스크에 대한 경로입니다. 또한 DownloadProgressChanged 이벤트에서 파일 크기(바이트)에서 보류 중인 바이트의 합계를 표시할 수 있습니다. 다운로드가 성공적으로 완료되면 다운로드한 파일은 로컬 컴퓨터에서 fileName이라는 이름이 지정됩니다.

파일은 스레드 풀에서 자동으로 할당되는 스레드 리소스를 사용하여 비동기적으로 다운로드됩니다. 파일을 사용할 수 있을 때 알림을 받으려면 다운로드FileCompleted 이벤트에 이벤트 처리기를 추가합니다. 그러나 다운로드 AndBlur의 코드는 콜백의 사용으로 인해 따라하기가 약간 어렵다는 것을 알 수 있습니다.