繁体   English   中英

注销事件处理程序以防止在C#Unity中进行多次回调

[英]Unregister event handler to prevent multiple callback in c# Unity

每次我调用方法subscription事件处理程序。 因此它多次被调用,因为我不退订事件处理程序。 如何正确退订事件处理程序以防止onComplete的多次回调?

public void DoTheAction(Action<bool> onComplete = null) {
        if (rewardBasedVideo.IsLoaded()) {
            rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded += (sender, args) => {
                onComplete(true);
            };
        } 
    }

您可能要考虑重构代码,这样就不会出现此问题,但这就是您可以实现所要求的方式的方法。

public void DoTheAction(Action<bool> onComplete = null)
    {
        if (rewardBasedVideo.IsLoaded())
        {
            rewardBasedVideo.Show();
            rewardBasedVideo.OnAdRewarded -= HandleOnAdRewarded;
            rewardBasedVideo.OnAdRewarded += HandleOnAdRewarded;    
        }
    }

    private void HandleOnAdRewarded(object sender, EventArgs e)
    {
        onComplete(true);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM