之前我使用过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;
}
}