unity + WebClient显示下载速度,当前下载量,下载总量

在这资源更新的进度条显示时

            using (WebClient client = new WebClient()) {
                sw.Start();
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
                client.DownloadFileAsync(new System.Uri(url), currDownFile);
            }

注册上进度条下载的委托和下载完成的委托就可以了

在更新进度条的委托中可以得到下载的进度条和下载的总大小以及已经下载的大小。

用e.UserState可以取到传入的参数,由于是下载文件有可能下载多个但是更新进度条的方法都走的一个方法所以需要用UserState来取得对应下载任务的进度条。

下面贴一下这两个委托的实现方法,我将WebClient简单封装了一下。

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) {
        //下载的总量
        PrecentData preData = new PrecentData();
        preData.total = string.Format("{0} MB / {1} MB", (e.BytesReceived / 1024d / 1024d).ToString("0.00"),  (e.TotalBytesToReceive / 1024d / 1024d).ToString("0.00"));
        preData.precent = (float)e.BytesReceived / (float)e.TotalBytesToReceive;



            string value = string.Format("{0} kb/s", (e.BytesReceived / 1024d / sw.Elapsed.TotalSeconds).ToString("0.00"));

        preData.speed = value;

        Loom.QueueOnMainThread((param) =>
        {
            NotificationCenter.Get().ObjDispatchEvent(KEventKey.m_evDownload, preData);
        }, null);

        
            NotiData data = new NotiData(NotiConst.UPDATE_PROGRESS, value);
            if (m_SyncEvent != null) m_SyncEvent(data);

            if (e.ProgressPercentage == 100 && e.BytesReceived == e.TotalBytesToReceive) {
                sw.Reset();

                data = new NotiData(NotiConst.UPDATE_DOWNLOAD, currDownFile);
                if (m_SyncEvent != null) m_SyncEvent(data);
            }
        }

要显示下载百分比使用

string.Format("{0} MB / {1} MB", (e.BytesReceived / 1024d / 1024d).ToString("0.00"),  (e.TotalBytesToReceive / 1024d / 1024d).ToString("0.00"));

要显示当前的下载速度

string.Format("{0} kb/s", (e.BytesReceived / 1024d / sw.Elapsed.TotalSeconds).ToString("0.00"));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四夕立羽

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值