我正在使用CloudBlockBlob对象和UploadFromFileAsync方法将文件上传到blob存储。完成后,我将调用一个服务,然后告诉几台计算机获取我上传的文件。但是,我注意到当我运行它然后去检查Azure门户中的文件时,它出现时会有一些滞后。我不知道这是不是因为门户网站需要一段时间来反映这一点,或者文件实际上还没有。这引出了我真正的问题,我可以使用这种方法检查文件的进度吗?将它提供给进度条也很好。
答案 0 :(得分:1)
在TPL中,报告进度的方式是通过IProgress<T>
界面。报告进度的异步方法预计会提供接受此接口实例的重载。
由于该方法没有过载,并且API没有公开类似的内容,我只能得出结论,不支持进度报告。
方法返回的Task
本身会指示操作何时完成,您应该等待。
答案 1 :(得分:1)
对于blob转移进度事件,请检查http://blogs.msdn.com/b/kwill/archive/2013/03/06/asynchronous-parallel-block-blob-transfers-with-progress-change-notification-2-0.aspx。
答案 2 :(得分:0)
再看一下,我注意到该方法返回一个任务,我可以检查完成状态。但是,这并没有给我任何进展的迹象。
答案 3 :(得分:0)
谁还在寻找这个东西。
以下是通过progressHandler
获取上传进度的示例:
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
);