上传到 Azure Blob 有两种不同的方式,同步上传和异步上传。
同步上传:
ICloudBlob 方法“UploadFromFile”没有任何用于文件上传的内置 CANCEL 机制。
语法:
public virtual void UploadFromFile(string path, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null);
异步上传:
“ICloudBlob”的“UploadFromFileAsync”方法有四个被覆盖的方法,其中三个有一个在等待完成时取消任务的选项。 UploadFromFileAsync 返回一个代表异步操作的 Task 对象。
语法:
public virtual System.Threading.Tasks.Task UploadFromFileAsync (string path, System.Threading.CancellationToken cancellationToken);
Example :
String filePath =@”c:\abc.txt”;
CancellationTokenSource source = new CancellationTokenSource();
CancellationToken token = source.Token;
source.Cancel();
UploadFromFileAsync(filePath, token);
1] CancellationToken 传播应取消操作的通知。
2] 实例化一个 CancellationTokenSource 对象,该对象生成一个取消令牌,可以将其分配给 CancellationToken 以发出 CANCEL 活动的信号。
3] 然后我们可以将 CancellationToken 传递给 UploadFromFileAsync 方法。如果在 CancellationTokenSource 上调用了“CANCEL”,则 UploadFromFileAsync 对象依次抛出 TaskCanceledException 异常,应该停止上传。
备选方案:
我们可以在一个线程中实现 UPLOAD 功能。在用户单击取消时,只需中止/终止该线程。但它并不能保证文件上传是否被取消,这只是有助于及时关闭应用程序,它不会卡在状态。