Удаление указателя после асинхронного вызова

Я пытаюсь загрузить файл в хранилище Azure, и я хотел бы использовать функцию асинхронности. Однако мне трудно узнать, правильно ли выполнена очистка.

Я хотел бы удалить данные файла и освободить все потоки, но, очевидно, это следует сделать после завершения загрузки.

Любые комментарии о том, как я могу улучшить это, чтобы сделать его более надежным?

Concurrency::task<void> BlobService::UploadAsync(
cloud_blob_container container, const wchar_t* blobName,
uint8_t * data, size_t dataLength,
const wchar_t* contentType, const wchar_t* cacheControl) {

rawptr_buffer<uint8_t>* buffer = new rawptr_buffer<uint8_t>(data, dataLength);
istream inputStream = buffer->create_istream();

cloud_block_blob blob = container.get_block_blob_reference(utility::string_t(blobName));
blob.properties().set_content_type(utility::string_t(contentType));
blob.properties().set_cache_control(utility::string_t(cacheControl));

azure::storage::blob_request_options options;
options.set_maximum_execution_time(std::chrono::seconds(10800));
options.set_server_timeout(std::chrono::seconds(10800));

azure::storage::access_condition access;
azure::storage::operation_context context;

return blob.upload_from_stream_async(inputStream, access, options, context).then([buffer, inputStream, data] {
buffer->close().wait();
inputStream.close().wait();

delete[] data;
delete buffer;
});

}

0

Решение

Задача ещё не решена.

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

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