HTTP 프로토콜을 사용해서 원격파일 다운로드 프로그램 만들고 있습니다.
HTTP 를 통해서 파일을 받을때는 WebClient 를 사용하고 있다.
단순하게 다운로드 받기 위해서는 아래와 같이 DownloadFile()를 사용한다.
그리고 다운로드 받는 상태를 알기 위해서는 DownloadFile 가 아닌 DownloadFileAsync 를 사용해야 한다.
그리고 받는 동안 호출되는 이벤트 함수와 다 받은후 처리 하는 함수를 등록해야 한다.
// 객체 생성
WebClient client = new WebClient();
// 이벤트 함수 등록
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
// 받는 동안 프로그래스바의 Value에 추가한다. (퍼센트 값이 바로 제공된다.)
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
progressfile.Value = e.ProgressPercentage;
}
//
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
…
}
파일을 실제로 다운로드 받을때는 아래와 같이 처리 합니다.
(DownloadFileAsync 이것을 사용해야 이벤트 함수가 호출 됩니다.)
스레드로 해도 될 듯 한데 우선 작업 하기 편하게 타이머를 사용해서 제작 하였습니다.
Test 버튼을 누르면 해당 동작이 시작 됩니다.
[동작 순서]
[C#] C++ 바이너리(Binary) 데이터를 C# BinaryReader 로 읽기. (0) | 2013.05.25 |
---|---|
[C#] - StreamReader, Regex, 텍스트 라인 파서 (0) | 2013.05.25 |
C# Ftp File Upload - File Type 처리할때 (0) | 2013.05.25 |
[C#] Round Rectangle 처리하기 (0) | 2013.05.25 |
C# Deep Copy (0) | 2013.05.25 |