मुझे अपने फ़ाइल डाउनलोडर एप्लिकेशन के लिए डाउनलोड दर सीमा लागू करने की आवश्यकता है, और मैंने कोडप्रोजेक्ट से 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(), लेकिन यह एक अच्छा विचार है का उपयोग कर दिया है: यहाँ है कि मैं एक पृष्ठभूमि सूत्र में उपयोग कर रहा हूँ डाउनलोड विधि का एक हिस्सा है? क्या आपके पास कोई सुझाव है कि लूप के दौरान मैं इसे कैसे कर सकता हूं?
मैं CalcFileSize विधि देखने की जरूरत – mehrdad