如題
開發語言:C#
類別下載:https://sites.google.com/site/ahijup/downloadspeed/mHttpwebClient.txt
實作步驟:
1.取得檔案的大小
2.切割適當的大小
3.根據指定的執行緒數目
4.開啟多執行緒下載
5.等待每個區塊下載完成
6.假設完成的大小不足於檔案大小
7.回到4.
8.直到檔案下載完成
以下是重要程式片段:
.
.
.
//第一個參數是下載網址與存檔位置,第二個是多少個執行緒同步下載
HttpWebClient wc = new HttpWebClient(pu, 1) ;
//新增webclient的datareceieve事件
wc.OnDataReceieve += new HttpWebClient.DataReceieveEventHandler(wc_OnDataReceieve);
//新增一個背景執行緒
System.Threading.Thread _t = new System.Threading.Thread(new System.Threading.ThreadStart(wc.Start));
//開啟執行緒
_t.Start();
.
.
.
//當收到事件的時候要處理的動作
void wc_OnDataReceieve(HttpWebClient obj, HttpWebClient.HttpClientEventArgs e)
{
//Console.WriteLine("Happening-> " + e.e.ToString());
switch (e.e)
{
case HttpWebClient.HttpClientEvents.ChunkDataRec:
break;
case HttpWebClient.HttpClientEvents.ChunkDownloadCompleted:
break;
case HttpWebClient.HttpClientEvents.ChunkRetry:
break;
case HttpWebClient.HttpClientEvents.ChunkError:
break;
case HttpWebClient.HttpClientEvents.ChunkRetryFull:
break;
case HttpWebClient.HttpClientEvents.FileRecComplete:
gf_OnDwonloadComplete(null);
break;
case HttpWebClient.HttpClientEvents.FailConnectToServer:
break;
case HttpWebClient.HttpClientEvents.DownloadProgressChanged:
break;
default:
break;
}
//throw new NotImplementedException();
}
.
.
.
基本上還沒實作地很完善,如有更新再放上來跟大家分享..
更新紀錄: [v1.0] 從網路以多執行緒的方式下載資料
沒有留言:
張貼留言