Ich sitze an einem Ort fest. Ich lese eine flv-Datei von einer URL. Ich lese diese in einen Stream und schreibe diesen Stream dann in einer Schleife in einen MemoryStream. Wenn der Code aus der Schleife kommt, schreibe ich den gesamten MemoryStream in ein ByteArray und schreibe dieses ByteArray dann in eine lokale Datei auf meiner Festplatte.
Da diese flv-Datei zu groß ist, braucht sie viel Zeit, um in der Schleife verarbeitet zu werden. Ich denke daran, den ursprünglichen großen Stream in MemoryStream in mehreren Threads zu lesen. Das heißt, ich teile den Stream in sagen wir 10 Teile und schreibe diese Teile in mehreren Threads in MemoryStream. Wie kann ich dies tun?
Ich füge mein Stück Code bei.
//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();
}
}
Für jede Hilfe sind wir dankbar Danke