Отмена загрузки

Я немного прочел о 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 к задаче.

Есть указатели?

2

Решение

Есть пример кода с использованием библиотеки 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();

Надеюсь, поможет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]