Я немного прочел о 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
к задаче.
Есть указатели?
Есть пример кода с использованием библиотеки PPL, Я сослался на него и изменил код для отмены задачи, используя библиотеку PPLX в C ++ REST SDK, которая будет использоваться для Azure Storage SDK для C ++, попробуйте код ниже.
/* 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();
Надеюсь, поможет.
Других решений пока нет …