मैं किसी स्थान पर फंस गया हूं। मैं एक यूआरएल से एक फ्लॉव फ़ाइल पढ़ रहा हूँ। मैं इसे स्ट्रीम में पढ़ रहा हूं और फिर इस स्ट्रीम को एक लूप में मेमोरीस्ट्रीम में लिख रहा हूं। जब लूप से कोड निकलता है, तो मैं पूरे मेमोरीस्ट्रीम को बाइटएरे में लिख रहा हूं और फिर अपनी हार्ड डिस्क पर स्थानीय फ़ाइल में इस ByteArray को लिख रहा हूं।एकाधिक थ्रेड में मेमोरीस्ट्रीम में स्ट्रीम पढ़ना
चूंकि यह FLV बहुत बड़ा है, इसमें लूप में प्रक्रिया करने में काफी समय लगता है। मैं कई धागे में मेमोरीस्ट्रीम में मूल बड़ी स्ट्रीम पढ़ने की सोच रहा हूं। इसका मतलब है कि स्ट्रीम को 10 हिस्सों में विभाजित करना और इन हिस्सों को कई धागे में मेमोरीस्ट्रीम में लिखना है। मैं यह कैसे करु?
मैं कोड के अपने टुकड़े को जोड़ रहा हूं।
//Get a data stream from the url
WebRequest req = WebRequest.Create(url);
WebResponse response = req.GetResponse();
using (Stream stream = response.GetResponseStream())
{
//Download in chuncks
byte[] buffer = new byte[1024];
//Get Total Size
int dataLength = (int)response.ContentLength;
//Download to memory
//Note: adjust the streams here to download directly to the hard drive
using (MemoryStream memStream = new MemoryStream())
{
while (true)
{
//Try to read the data
int bytesRead = stream.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
{
Application.DoEvents();
break;
}
else
{
//Write the downloaded data
memStream.Write(buffer, 0, bytesRead);
}
}
//Convert the downloaded stream to a byte array
byte[] downloadedData = memStream.ToArray();
}
}
किसी भी मदद की सराहना की धन्यवाद
आपको क्यों लगता है कि एकाधिक धागे आपको यहां मदद करेंगे? –
यदि मैं थ्रेड में मेमोरीस्ट्रीम में उस बड़ी स्ट्रीम को पढ़ सकता हूं, तो मैं वास्तव में प्रक्रिया को तेज कर सकता हूं। –
इस मामले में बाधा नेटवर्क के माध्यम से आने का समय है, न कि इसे पढ़ने के लिए और इसे स्मृति में ले जाने के लिए जितना समय लगता है। –