Область применения C++ ComPtr Callback

Я читал о WRL, в частности, используя Callback и ComPtr для выполнения асинхронной операции. Однако я не могу получить четкий ответ о времени жизни ComPtr при использовании таким образом. Обратный вызов использует информацию, которую возвращает асинхронная функция, но не полагается на какую-либо другую информацию из приложения, поэтому я не хотел бы ждать ее завершения. Например:

void SomeFunction()
{
  ComPtr<IAsyncOperation<...*>> pOperation;

  //Activate instance and call async function

  pOperation->put_Completed(Callback<IAsyncOperationCompletedHander<...*>[...](...)
  {
    //Logic to be completed when Async call finishes
  }).Get());

  //Function exits here, process keeps running. Is pOperation going to get cleaned up?
}

У меня сложилось впечатление, что, поскольку ComPtr - это умный указатель, он не будет собирать мусор, пока не завершится обратный вызов и refcount == 0, это правильно?

0 ответов

Другие вопросы по тегам