C#windows应用程序中的带宽限制

时间:2012-02-20 06:43:10

标签: c# windows-applications bandwidth-throttling

我需要在Windows应用程序中实现Bandwidth Throttling功能。 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
    }
  }
}

在上面的代码中,有一个我用来上传文件的Web服务。此Web服务一次以字节为单位获取整个文件。所以在这种情况下,我无法以块的形式上传文件。任何人都可以建议我实现这一目标的一些方法,或者我可以改变服务以接受数据块中的数据?

1 个答案:

答案 0 :(得分:0)

是的,您可以在WinForms / WPF应用程序中使用ThrottledStream。