Tôi bị kẹt ở một nơi. Tôi đang đọc một tập tin flv từ một URL. Tôi đang đọc này vào một Stream và sau đó viết Stream này vào MemoryStream trong một vòng lặp. Khi mã đi ra khỏi vòng lặp, tôi đang viết toàn bộ MemoryStream đến một ByteArray và sau đó viết ByteArray này vào một tệp cục bộ trên đĩa cứng của tôi.Đọc Luồng tới một MemoryStream trong nhiều chủ đề
Vì flv này quá lớn nên phải mất rất nhiều thời gian để xử lý trong vòng lặp. Tôi đang nghĩ đến việc đọc luồng lớn ban đầu trong MemoryStream trong nhiều luồng. Điều đó có nghĩa là chia luồng trong 10 phần và viết những phần này vào MemoryStream trong nhiều chủ đề. Làm thế nào để tôi làm điều này?
Tôi đang đính kèm đoạn mã của mình.
//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();
}
}
Any help is appreciated Cảm ơn
Tại sao bạn nghĩ rằng nhiều chuỗi sẽ giúp bạn ở đây? –
Nếu tôi có thể đọc luồng lớn đó vào bộ nhớ trong chuỗi, tôi thực sự có thể tăng tốc quá trình. –
Nút cổ chai trong trường hợp này là thời gian cần thiết để đến qua mạng và không phải mất thời gian để đọc và di chuyển nó trong bộ nhớ. –