我必须创建一个Windows应用程序,在该应用程序中,我将上传多个文件到azure文件共享存储,并且我需要使用windows中的进度条控件显示多个文件上传进度。
我想显示windows窗体上的动态进度条和每次文件上传的迭代。
有谁能建议用样例循环迭代来上传多个文件,使用windows窗体上的进度条。
发布于 2018-04-03 07:42:12
假设您指的是Blob存储。
一个处理IProgress消息的StorageProgress对象。
保存有关单个操作中请求流和响应流的进度数据传输的信息。
在他们的网站上有一个很好的例子,也就是一个流例子。
CancellationToken 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
);那么从这里到哪里。因为这是IO绑定工作,所以它最好的而不是使用Parallel.For或Parallel.ForEach,这是对资源的浪费。
但是,ActionBlock类中的TPL数据流可以适合,或者只是async/await模式与Task.WaitAll法。
数据流示例
var block = new ActionBlock<MySomething>(
mySomething => MyMethodAsync(mySomething),
new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 50 });
foreach (var something in ListOfSomethings)
{
block.Post(something );
}
block.Complete();
await block.Completion;所以不用为你写剩下的代码
显然,这里没有细节,但你现在是一个程序员,你的任务(如果你选择接受它)来解决它。免费午餐,我期待着您对中间的每件事的下一个问题:)
https://stackoverflow.com/questions/49624284
复制相似问题