2012-02-04 2 views
2

나는 HTTP를 통해 동시에 여러 파일을 다운로드하고, 새 다운로드를 추가하고, 일시 중지/다시 시작하고, 각 다운로드 프로세스 정보를 표시하고 업데이트하는 것을 지원해야하는 WPF 다운로드 관리자에서 작업하고 있습니다 (파일 이름, 크기, 다운로드 백분율, 시간 남음 ...)을 DataGrid에 저장하고 ProgressBar 및 기타 여러 항목의 진행 상황을 표시합니다.C에서 다중 스레드 다운로더

그래서 각 다운로드 프로세스마다 별도의 스레드를 사용하고 스레드를 동적으로 만들거나 취소 할 수 있습니다. 가장 좋은 방법은 무엇입니까? ThreadWork를 사용하여 BackgroundWorker를 사용 하시겠습니까?

+0

각 다운로드 프로세스마다 여러 개의 스레드가 필요할 수도 있습니다. –

답변

0

나는 Thread을 직접 사용하고 내가 만든 모든 밟는 부분에 대한 참조를 유지합니다.

6

DownloadFileAsync과 같은XXXAsync 메서드는 이미 별도의 스레드에서 HTTP 요청을 수행 할 수있는 모든 메서드의 비동기 버전을 제공합니다. 또한 C# 5.0 비동기 준비가되었습니다.

WPF 응용 프로그램이므로 Dispatcher.BeginInvoke 메서드를 사용하여 기본 UI 스레드에서만 UI 컨트롤을 수정해야합니다.

+0

예, WebClient를 사용할 수 없습니다. 다운로드를 일시 중지/다시 시작할 수 없으므로 WebClient를 사용할 수 없습니다. 따라서 HttpWebRequest에 대한 사용자 지정 래퍼를 만들어야합니다. 나는 각 프로세스에 새로운'Thread'를 사용해야하고 이것을 백그라운드 스레드로 설정해야한다고 생각합니다. – marko