问题是我想知道如何立即取消FirebaseStorage UploadTask。
我已阅读https://firebase.google.com/docs/storage/unity/upload-files,但没有有关如何取消UploadTask的示例。
// Data in memory
var custom_bytes = new byte[] { ... };
// Create a reference to the file you want to upload
Firebase.Storage.StorageReference rivers_ref = storage_ref.Child("images/rivers.jpg");
// Upload the file to the path "images/rivers.jpg"
rivers_ref.PutBytesAsync(custom_bytes)
.ContinueWith ((Task<StorageMetadata> task) => {
if (task.IsFaulted || task.IsCanceled) {
Debug.Log(task.Exception.ToString());
// Uh-oh, an error occurred!
} else {
// Metadata contains file metadata such as size, content-type, and download URL.
Firebase.Storage.StorageMetadata metadata = task.Result;
string download_url = metadata.DownloadUrl.ToString();
Debug.Log("Finished uploading...");
Debug.Log("download url = " + download_url);
}
});
答案 0 :(得分:2)
PutBytesAsync()
方法返回一个System.Task<T>
,它们本身支持取消。我建议您阅读Task Cancellation Documentation,因为有一些警告:
成功取消涉及请求代码调用 CancellationTokenSource.Cancel方法和用户委托 及时终止操作。您可以终止 使用以下选项之一进行操作:
只需从委托返回即可。在许多情况下,这是 足够;但是,以这种方式取消的任务实例 过渡到TaskStatus.RanToCompletion状态,而不是 TaskStatus。取消状态。
通过抛出OperationCanceledException并将令牌传递给它 要求取消的订单。首选的方法是 使用ThrowIfCancellationRequested方法。被取消的任务 这样,转换为Canceled状态,调用代码 可以用来验证任务是否响应了其取消请求。