Estoy atrapado en un lugar. Estoy leyendo un archivo FLV desde una URL. Estoy leyendo esto en un Stream y luego escribiendo este Stream en un MemoryStream en un bucle. Cuando el código sale del ciclo, escribo todo el MemoryStream en un ByteArray y luego escribo este ByteArray en un archivo local en mi disco duro.Lectura de flujo a un MemoryStream en múltiples hilos
Como esta flv es demasiado grande, lleva mucho tiempo procesarla en el ciclo. Estoy pensando en leer la secuencia grande original en MemoryStream en varios hilos. Eso significa dividir el flujo en, por ejemplo, 10 partes y escribir estas partes en MemoryStream en varios hilos. ¿Cómo hago esto?
Adjunto mi código.
//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();
}
}
Cualquier ayuda se agradece Gracias
¿Por qué crees que varios hilos te ayudarán aquí? –
Si puedo leer esa secuencia grande en la secuencia de memoria en hilos, realmente puedo acelerar el proceso. –
El cuello de botella en este caso es el tiempo que lleva llegar a través de la red y no el tiempo que lleva leerlo y moverlo a la memoria. –