C# webClient BytesReceived 问题

C# webClient BytesReceived Issue

我正在 Unity3d 中创建一个应用程序,它需要通过 PHP 文件从数据库下载图像, 由于各种原因,我决定使用 System.Net.WebClient 而不是统一的 class WWW,经过几次尝试,它可以使用此代码。

    idEvent = 3; //exemple
    string responsefromserver = "";
    Uri URL = new Uri("http://******.000webhostapp.com/ImEvents.php");
    WebClient webClient = new WebClient();

    NameValueCollection formData = new NameValueCollection();
    formData["selectedId"] = idEvent;

    webClient.DownloadProgressChanged += (object sender, DownloadProgressChangedEventArgs e) =>
    {
        Debug.Log ( string.Format("  downloaded {0} of {1} bytes.",
        e.BytesReceived,
        bytes //e.TotalBytesToDownload returns always -1 so this value is given by a variable
        ));
    };
    webClient.UploadValuesCompleted += (object sender, UploadValuesCompletedEventArgs e) =>
    {
        responsefromserver = Encoding.UTF8.GetString(e.Result);
        webClient.Dispose();
    };
    webClient.UploadValuesAsync(URL, "POST", formData);

e.TotalBytesToDownload returns 总是-1,但经过各种研究后我注意到这是由于其他因素造成的,因为这是一个我可以用另一种方式恢复的信息,所以这无关紧要我 ... 问题是 e.BytesRecived 立即上升到 3000-4000 字节左右的数字然后 RETURN BACK 并给我所有在 1444 和 1452 字节之间波动的值...

这没有任何意义!!!

这里是日志的例子

  downloaded 6828 of 39680 bytes.
  downloaded 2644 of 39680 bytes.
  downloaded 1452 of 39680 bytes.
  downloaded 1447 of 39680 bytes.
  downloaded 1444 of 39680 bytes.
  downloaded 1452 of 39680 bytes.
  ecc...

所以我的问题是:

为什么 e.BytesReceived 没有给我 接收到的实际字节数(应该只增加文件大小并且不在 1444 和 1452 字节之间振荡)

(如果重要,此代码在 IEnumerator 函数内部...)

我为我的英语道歉

正如@CodeCaster 在评论中指出的那样DownloadProgressChangedEventArgs.BytesReceived这是自上次事件触发以来接收到的字节数 而不是我错误地认为到目前为止下载的总字节数。

我很抱歉问了一个可能不必要的问题,但不幸的是,在 MSDN 中,他们并没有很清楚地简单地说 DownloadProgressChangedEventArgs.BytesReceived 是 Int64 值,表示数字收到的字节数。