[DllImport(Libraries.Messages, EntryPoint = "messages_set_message_incoming_cb")]
internal static extern int SetMessageIncomingCb(IntPtr serviceHandle, MessageIncomingCallback cb, IntPtr userData);
- [DllImport(Libraries.Messages, EntryPoint = "messages_unset_message_incoming_cb")]
- internal static extern int UnsetMessageIncomingCb(IntPtr serviceHandle);
-
[DllImport(Libraries.Messages, EntryPoint = "messages_send_message")]
internal static extern int SendMessage(IntPtr serviceHandle, IntPtr messageHandle, bool saveToSentbox, MessageSentCallback cb, IntPtr userData);
private Interop.Messages.MessageIncomingCallback _messageReceivedCallback;
+ private bool _registered = false;
+
internal event EventHandler<MessageReceivedEventArgs> _MessageReceived
{
add
{
- if (_messageReceived == null)
+ if (_registered == false && _messageReceived == null)
{
RegisterMessageReceivedEvent();
}
remove
{
_messageReceived -= value;
- if (_messageReceived == null)
- {
- UnregisterMessageReceivedEvent();
- }
}
}
{
Log.Error(Globals.LogTag, "Failed to set message incoming callback, Error - " + (MessagesError)ret);
}
- }
- private void UnregisterMessageReceivedEvent()
- {
- int ret = Interop.Messages.UnsetMessageIncomingCb(_MessageServiceHandle);
- if (ret != (int)MessagesError.None)
- {
- Log.Error(Globals.LogTag, "Failed to unset message incoming callback, Error - " + (MessagesError)ret);
- }
+ _registered = true;
}
}
}