Båndbredde i C # Windows applikation

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skal implementere Båndbredde Throttling funktion i Windows applikation. Der er to tråde på SO:



  • Sådan begrænser du programmisk begrænsning af båndbreddebrugen af ​​min c # Windows-formularapplikation

  • Båndbredde i C #



Men det er for webapp. Jeg har brug for det til Windows app.
Hvordan kan jeg implementere det i Windows?
Kan jeg bruge ovenstående links til Windows-applikationer?


Her er koden jeg bruger:


// Apply bandwidth control
int uploadLimit = GlobalClass.GetFileUploadLimit();

if (uploadLimit > 0)
{
  long bps = uploadLimit * 1024;
  const int BufferSize = 8192;
  MemoryStream mstream = new MemoryStream();//Stream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize);

  // Openup source stream.
  using (FileStream sourceStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize))
  {
    // Create throttled destination stream.
    ThrottledStream destinationStream = new ThrottledStream(mstream, bps);
    byte[] buffer = new byte[BufferSize];
    int readCount = sourceStream.Read(buffer, 0, BufferSize);

    while (readCount > 0)
    {
      destinationStream.Write(buffer, 0, readCount);
      readCount = sourceStream.Read(buffer, 0, BufferSize);
      client.FileUpload(Convert.ToInt16(userId), System.IO.Path.GetFileName(fileName), buffer);
      //Webservice: Here is the problem
    }
  }
}


I ovenstående kode er der en webservice, jeg bruger til at uploade fil. Denne webtjeneste tager hele filen i bytes på én gang. Så i dette tilfælde kan jeg ikke uploade filen i stykker. Kan nogen foreslå mig en eller anden måde at opnå dette eller Skal jeg ændre i tjeneste for at acceptere data i bidder?

Bedste reference


Ja, du kan bruge ThrottledStream i WinForms/WPF-applikationen.