Я застрял в одном месте. Я читаю FLV-файл с URL. Я читаю это в поток, а затем записываю этот поток в MemoryStream в цикле. Когда код выходит из цикла, я записываю весь MemoryStream в ByteArray и затем записываю этот ByteArray в локальный файл на моем жестком диске.
Поскольку этот flv слишком велик, обработка в цикле занимает много времени. Я думаю о том, чтобы прочитать оригинальный большой поток в MemoryStream в нескольких потоках. Это означает разделение потока, скажем, на 10 частей и запись этих частей в MemoryStream в несколько потоков. Как мне это сделать?
Я прилагаю свой кусок кода.
//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();
}
}
Любая помощь приветствуется
Спасибо