Регулирование пропускной способности в приложении C # windows - PullRequest
1 голос
/ 20 февраля 2012

Мне нужно реализовать функцию регулирования пропускной способности в приложении Windows.В SO есть два потока:

Но это для веб-приложения.Мне это нужно для приложения Windows.Как я могу реализовать это в Windows?Могу ли я использовать вышеупомянутые ссылки для приложений Windows?

Вот код, который я использую:

// 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
    }
  }
}

В приведенном выше коде есть веб-служба, которую я использую для загрузки файла.Этот веб-сервис принимает весь файл в байтах одновременно.Поэтому в этом случае я не могу загрузить файл кусками.Может ли кто-нибудь предложить мне какой-нибудь способ сделать это или я должен изменить службу, чтобы принимать данные порциями?

1 Ответ

0 голосов
/ 20 февраля 2012

Да, вы можете использовать ThrottledStream в приложении WinForms / WPF.

...