进度条,但是不能正常使用。我在堆栈溢出上看到了一些显示下载进度的答案,但我想通知我的用户上传进度,但没有找到任何解决方案。这是我的代码:publicstaticasyncTaskPostFileAsync(Streamfilestream,stringfilename,intfilesize){//进度跟踪progress.HttpSendProgress+=(objectsender,System.Net.Http.Handlers.HttpProgressEventArgse)=>{intprogressPercentage=(int)(e.BytesTransferred*100/filesize);//引发用于更新UI的事件UploadProgressMade(sender,newSystem.Net.Http.Handlers.HttpProgressEventArgs(progressPercentage,null,e.BytesTransferred,null));};使用(varclient=HttpClientFactory.Create(progress)){使用(varcontent=newMultipartFormDataContent("------"+DateTime.Now.Ticks.ToString("x"))){content.Add(newStreamContent(文件流),"文件数据",文件名);使用(varmessage=awaitclient.PostAsync("http://MyUrl.example",content)){varresult=awaitmessage.Content.ReadAsStringAsync();System.Diagnostics.Debug.WriteLine(“上传完成”);r返回结果;}}}}显示某种进度,但是当进度达到100%时,文件还没有上传。在收到最后一条进度消息后的某个时间也会打印消息“上传完成”。也许进度显示的是从设备发送的字节数,而不是已经上传的字节数,所以当它显示100%时,所有字节都刚刚发送但尚未被服务器接收?编辑:试过这个解决方案:https://forums.xamarin.com/discussion/56716/plans-to-add-webclient-to-pcl并且效果更好一些。尝试这样的事情:我遇到了同样的问题。我通过实施自定义HttpContent修复了它。我用这个对象来跟踪上传进度的百分比,你可以添加一个事件并监听它。您应该自定义SerializeToStreamAsync方法。内部类ProgressableStreamContent:HttpContent{privateconstintdefaultBufferSize=4096;私有流内容;私有intbufferSize;私有布尔内容已消耗;私人下载器;publicProgressableStreamContent(Streamcontent,Downloaddownloader):this(content,defaultBufferSize,downloader){}publicProgressableStreamContent(Streamcontent,intbufferSize,Downloaddownloader){if(content==null){thrownewArgumentNullException("content");}}if(bufferSize{varbuffer=newByte[this.bufferSize];varsize=content.Length;varuploaded=0;downloader.ChangeState(DownloadState.PendingUpload);using(content)while(true){varlength=content.Read(buffer,0,buffer.Length);if(length参考:这是因为你做的数学错了。更改:intprogressPercentage=(int)(e.BytesTransferred*100/filesize);To:intprogressPercentage=(int)(e.BytesTransferred/filesize)*100;请改用此代码:doublebytesOut=double.Parse(e.BytesTransferred.ToString());双总字节数=double.Parse(filesize.ToString());双百分比=bytesOut/totalBytes*100;或者你可以简单地使用e.ProgressPercentage以上是C#学习教程:HowtouseC#HttpClientPostAsync显示上传进度分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理会员删除。如需转载请注明出处:
