Dosya indirici uygulamam için bir indirme hızı sınırı uygulamam gerekiyor ve CodeProject'ten ThrottledStream
sınıfına baktım ama bu durum benim durumumda çalışmayacak çünkü indirme sırasında sınırı değiştirmek için, sadece başında değil.İndirme yöneticisi - limit indirme hızı
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;
}
}
Ben ettik Thread.Sleep() veya Thread.Wait(), ama iyi bir fikirdir kullanarak da görülen insan: İşte bir arka plan iş parçacığı kullanıyorum indirme yönteminin bir parçası değil mi? Bu süre içinde bunu nasıl yapabileceğimi önerilerin var mı? Bunun sana yararlıdır olabilir sunucudan dosya indirmek için bu kodu kullanmış
i CalcFileSize yöntemini görmek gerek – mehrdad