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

本文关键字:带宽 窗口 应用程序 | 更新日期: 2023-09-27 18:25:13

我需要在windows应用程序中实现带宽限制功能。SO上有两个线程:

  • 如何用程序限制我的c#windows窗体应用程序的带宽使用
  • C中的带宽限制#

但这是针对网络应用程序的。我需要它用于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服务一次获取整个文件(以字节为单位)。所以在这种情况下,我不能上传文件块。有人能给我建议一些实现这一点的方法吗?或者我应该更改服务以接受大块数据吗?

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

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