デリゲートにバインドする関数内でデリゲートのバインドを解除するのは問題ないか

デリゲートにバインドする関数内でデリゲートの解除を行うことは問題ないでしょうか?

<br/>

Handle = Delegate.AddLambda([this]()

{

// 実行処理

// 自分自身を解除

Delegate.Remove(Handle);

Handle.Reset();

});

<br/>

上記はクラス内のある関数内で実行される処理です。

クラスメンバであるDelegateというマルチキャストデリゲートにラムダ関数を渡しています。

ラムダ関数内ではDelegateの解除と同じくメンバであるHandleのResetを呼び出しています。

<br/>

こちらの実装方法でDelegate.Broadcast()の呼び出しを試してみたところ、問題なく動きはするのですが実装に問題ないのかが気になり質問しました。

将来的にDelegateには複数のバインドが実行される予定です。

よろしくお願いします。

お世話になっております。

エンジンのソースコードにおいても幾つか同様の例がございますので問題ないかと思います。

例)

SlateRHIRenderer.cpp SlateRendererUtil::AreShadersInitialized 関数内

VREditorModule.cpp FVREditorModule::StartupModule 関数内

よろしくお願いいたします。

ご回答いただきありがとうございます。

一例があるとのことで参考にさせていただきます。

ご対応いただきありがとうございました。

ご確認ありがとうございます。

本件はクローズいたします。

また何かありましたらお問い合わせ下さい。