PushSharp - Singleton与否

时间:2016-10-03 11:03:12

标签: c# push-notification pushsharp

之前我使用过PushSharp v 2但想要更新到v 4.我想知道单身是否真的是我的最佳做法。

当前工作流程:我有一个每分钟开始的工作,并检查是否有新的通知要发送。

PushSharp v.4引入了GcmServiceBroker.Start()和GcmServiceBroker.Stop(),我想知道单身是否真的是最好的做法,因为你不能使用Stop()。至少我没想到这一点。我不能使用Stop()的原因是因为当我调用Stop()时它会设置标志IsAddingCompleted,这会阻止更多通知被添加到队列中,而且我不知道如何释放该锁。

因此我的解决方案是不使用Stop(),但我理解Stop()确保在退出之前已经发送了所有通知,我不想放弃这种改进。那么,甚至可以将PushSharp v4“正确的方式”用作单例,还是每次开始工作时创建新对象都更好。

这是我作为单身人士的代码:

public class GcmPushService
{
    static GcmPushService()
    {
        Push = PushBrokerSingleton.Instance;
    }

    internal static GcmServiceBroker Push { get; }

    public static void QueueNotification(string deviceToken, GcmNotification notification)
    {            
        notification.RegistrationIds.Add(deviceToken);
        Push.QueueNotification(notification);           
    }

    private class PushBrokerSingleton
    {            
        static PushBrokerSingleton()
        {
            var gcmServiceBroker = new GcmServiceBroker(...gcmConfiguration);

            //Exception handling

            gcmServiceBroker.Start();

            Instance = gcmServiceBroker;
        }

        internal static readonly GcmServiceBroker Instance;
    }  
}

0 个答案:

没有答案