假设以下代码:
void SomeClass::SomeMethod()
{
CComPtr<ISomeService> service = GetService();
ExecuteInNewThread([&]()
{
service->AnotherMethod();
});
}
函数 ExecuteInNewThread 在新线程中执行函数对象,因此可以在释放服务指针后执行 lambda 函数。防止这种情况的最佳方法是什么?在 lambda 结束时在 SomeMethod 和 Release() 中执行 AddRef() 看起来很难看。