回答ありがとうございます。
回答を参考にUEのLogをとってみたところ、DestroySessionを呼ぶ前後でPending->Destroyingに変化していて理想通りの動きをしていることが分かりました。
LogApp: Before DestroySession Info: Status = 2, MemberNum = 0, LogApp: After DestroySession Info: Status = 7, MemberNum = 0,
そして、先ほど下記のフォーラムを参考にコードを変更したところ、デリゲートが呼ばれるようになりました。
`IOnlineSessionPtr sessionInterface = GetOnlineSessionInterface();
if (!sessionInterface.IsValid()) {
return;
}
FOnDestroySessionCompleteDelegate delegate;
delegate.BindUObject(this, &UOnlineManager::DestroySessionCompleteDelegate);
if (!sessionInterface->DestroySession(m_sDebugSessionName, delegate)) {
UE_LOG(LogApp, Error, TEXT(“Failed to call DestroySession!”));
}`始めに質問した時と同じdelegateを直接渡す方式ですが、Sessionの通信設定の変更(bUseEOSSessionsをtrueに変更)との相性で動くようになったのかもしれません。
Destroyの時だけ特殊な記法とはなってしまいますが、理想通り動くようになったので
今回はこの修正で完了としようと思います。
ご回答いただきありがとうございました。