5
ファイルダウンローダーアプリケーションのダウンロード速度の制限を実装する必要があり、CodeProjectからThrottledStream
クラスを見ましたが、これは私の場合は機能できません開始時だけでなく、ダウンロード中の制限を変更することができます。ここで私は、バックグラウンドスレッドで使用しているダウンロード方法の一部です:ダウンロードマネージャーのダウンロード速度の制限
webResponse = (HttpWebResponse)webRequest.GetResponse();
responseStream = webResponse.GetResponseStream();
responseStream.ReadTimeout = 5000;
downloadCache = new MemoryStream(this.MaxCacheSize);
byte[] downloadBuffer = new byte[this.BufferSize];
int bytesSize = 0;
CachedSize = 0;
int receivedBufferCount = 0;
while (true)
{
bytesSize = responseStream.Read(downloadBuffer, 0, downloadBuffer.Length);
if (this.Status != DownloadStatus.Downloading || bytesSize == 0
|| this.MaxCacheSize < CachedSize + bytesSize)
{
WriteCacheToFile(downloadCache, CachedSize);
this.DownloadedSize += CachedSize;
downloadCache.Seek(0, SeekOrigin.Begin);
CachedSize = 0;
if (this.Status != DownloadStatus.Downloading || bytesSize == 0)
break;
}
downloadCache.Write(downloadBuffer, 0, bytesSize);
CachedSize += bytesSize;
receivedBufferCount++;
if (receivedBufferCount == this.BufferCountPerNotification)
{
this.RaiseDownloadProgressChanged();
receivedBufferCount = 0;
}
}
また、私はのThread.sleep()またはThread.Waitを(使用して人を)見てきましたが、それは良いアイデアですか?このwhileループの中で私がこれをどうやってやれるか提案はありますか?私はそれがあなたに役に立つかもしれサーバーからファイルをダウンロードするには、このコードを使用している
iはCalcFileSize方法を確認する必要があります – mehrdad