1

Windows アプリケーションに帯域幅調整機能を実装する必要があります。SO には 2 つのスレッドがあります。

しかし、それはWebアプリ用です。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 サービスは、一度にファイル全体をバイト単位で取得します。したがって、この場合、ファイルをチャンクでアップロードすることはできません。誰かがこれを達成する方法を提案できますか、それともデータをチャンクで受け入れるようにサービスを変更する必要がありますか?

4

1 に答える 1

1

はい、WinForms/WPF アプリケーションで ThrottledStream を使用できます。

于 2012-02-20T06:47:27.040 に答える