Регулировка пропускной способности в приложении C # windows

Мне нужно реализовать функцию регулирования пропускной способности в приложении 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
    }
  }
}

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


person Deepak Kumar    schedule 20.02.2012    source источник
comment
Вторая опубликованная вами ссылка содержит ссылку на пример ThrolledStream. Это должно работать для вашего приложения для Windows.   -  person akhisp    schedule 20.02.2012
comment
Я использовал тот же класс дросселирования из ссылки. Пожалуйста, посмотрите мой код выше.   -  person Deepak Kumar    schedule 20.02.2012
comment
Вы не писали код, который выполняет загрузку, очевидно, что вы ничего не можете сделать, чтобы изменить способ его работы.   -  person Hans Passant    schedule 20.02.2012


Ответы (1)


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

person AlfeG    schedule 20.02.2012
comment
Проверьте мой вопрос и проверьте, что я могу для этого сделать? - person Deepak Kumar; 20.02.2012