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