3

我已经阅读了一些有关 Azure SDK 的内容,为了取消您似乎需要传入cancellation_token.

我的上传代码很简单:

azure::storage::cloud_block_blob blockBlob = container.get_block_blob_reference(fileLeaf.wstring());

auto task = blockBlob.upload_from_file_async(fullFilePath);

但是,我上传的某些文件可能非常大,我希望能够取消此操作。如果可能的话,我可能还会使用延续,并且也需要所有这些取消。

我遇到的问题是我看不到任何附加cancellation_token到任务的方法。

任何指针?

4

1 回答 1

4

一个使用 PPL 库的示例代码,我参考了它并更改了使用 C++ REST SDK 中的 PPLX 库取消任务的代码,用于 C++ 的 Azure 存储 SDK,请尝试下面的代码。

/* Declare a cancellation_token_source and get the cancellation_token, 
 * please see http://microsoft.github.io/cpprestsdk/classpplx_1_1cancellation__token__source.html
*/
#include <pplxtasks.h>
cancellation_token_source cts;
auto token = cts.get_token();

//Pass the cancellation_toke to task via then method, please see https://msdn.microsoft.com/en-us/library/jj987787.aspx
task.then([]{}, token).wait();

// Cancel the task
cts.cancel();

希望能帮助到你。

于 2017-04-12T08:32:10.067 回答