如何在Windows窗体上生成动态进度条以进行并行上载进度

时间:2018-04-03 07:14:21

标签: c# winforms progress-bar windows-applications asyncfileupload

我必须创建一个Windows应用程序,我将多个文件上传到azure文件共享存储,我需要使用Windows中的进度条控件显示多个文件上传进度。

我希望在每次上传文件上传迭代时在Windows窗体上显示动态进度条。

任何人都可以建议使用样本循环迭代,使用Windows窗体上的进度条上传多个文件。

1 个答案:

答案 0 :(得分:0)

假设您指的是 Blob存储

UploadFromFileAsync(String, AccessCondition, BlobRequestOptions, OperationContext, IProgress, CancellationToken)

  

用于处理StorageProgress消息的IProgress对象。

StorageProgress Class

  

保存有关两个请求的进度数据传输的信息   和单个操作中的响应流。

他们网站上的一个不错的小例子,尽管是一个流示例

println mm.get(5)

那么从哪里来。因为这是 IO绑定最好的使用nullCancellationToken cancellationToken = new CancellationToken(); IProgress<StorageProgress> progressHandler = new Progress<StorageProgress>( progress => Console.WriteLine("Progress: {0} bytes transferred", progress.BytesTransferred) ); await blob.UploadFromStreamAsync( srcStream, default(AccessCondition), default(BlobRequestOptions), default(OperationContext), progressHandler, cancellationToken ); ,这会浪费资源。

但是,ActionBlock Class中的TPL dataflow可以适用,或仅Parallel.For / Parallel.ForEach模式Task.WaitAll Method

数据流示例

async

所以不用为你编写其余的代码

  1. 在开始转移之前,只需添加文件的大小(以字节为单位)即可。
  2. 创建进度处理程序,并将它们与您的任务相关联
    • 可能会将转帐金额与您的任务保持一致
  3. 进度(以线程安全方式)或仅使用timmer(以线程安全方式)将进度与预期金额相加
  4. 显然这里有详细信息,但是你现在是一名程序员,你的任务(如果你选择接受它)来解决它...免费午餐,我期待你的下一个问题关于一切中间:)