次のコードを想定します。
void SomeClass::SomeMethod()
{
CComPtr<ISomeService> service = GetService();
ExecuteInNewThread([&]()
{
service->AnotherMethod();
});
}
関数ExecuteInNewThreadは、新しいスレッドで関数オブジェクトを実行するため、サービスポインターが解放された後にラムダ関数を実行できます。これを防ぐための最良の方法は何でしょうか?ラムダの最後でSomeMethodとRelease()でAddRef()を実行すると、見苦しくなります。