Чтение потока в MemoryStream в нескольких потоках

Я застрял в каком-то месте. Я читаю файл flv по URL-адресу. Я читаю это в Stream, а затем записываю этот Stream в 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();
                    }  


                }

Любая помощь приветствуется Спасибо

5
задан sumit_programmer 5 February 2011 в 14:20
поделиться