C# Winforms应用程序 - 上传流进度条



我希望将进度条添加到上传到Web服务的文件。

我刚刚开始开发一个 winforms 应用程序,我相信该应用程序使用WCF允许客户端将文档上传到我们的公司存储库。

我正在使用上传服务,我在其中传递由元数据和文件组成的多部分流。我已经负责构建此部分。

我不太确定如何将"某些东西"挂到流中,以便我可以跟踪它正在上传

我见过有些人使用后台工作线程异步跟踪任务的进度,但似乎找不到有人这样做来跟踪上传到 Web 服务的文件的示例。我似乎只找到一个有人跟踪内置到内存中的流的示例。

任何建议/帮助将不胜感激。

谢谢!

  • (我是一名实习生,所以如果我解释错误,我道歉。如有必要,我很乐意提供更清晰的详细信息(

编辑:据我所知,上传流的方法只需要一个流,没有选项可以交给它流的大小,或者一次读取多少字节。

假设你知道文件的大小(如果它是本地的,你很可能知道(。

您可能正在磁盘外将其作为流访问,然后将其复制到上传流中。

如果您以块(例如缓冲区(的形式进行,则可以计算进度:

var totalNumberOfChunks = (fileSize / chunkSize);
for(var chunk = 0; chunk < totalNumberOfChunks; chunk++)
{
// assuming you have the chunk byte array
// and have already sent it up to the server
var progress = ((double)chunk / totalNumberOfChunks) * 100;
// do something to surface this progress
}

从本质上讲,你只是想计算出你发送了多少个单独的数据块,然后在你发送它们时计算出你走了多远,并以某种方式显示进度。

当然,有时有一些方法可以为您完成此操作: 使用 Webclient.Uploadfile 在文件上传期间获取上传进度。

相关内容

  • 没有找到相关文章

最新更新