// Diese Methode schickt eine Nachricht asynchron ab. Hierbei
        // werden alle registrierten Abonnementen benachrichtigt.
        public static void SendMessageAsync(MessageEventArgs eventArgs)
        {
            // Implementierung der SendMessage-Methode
            MessageEventHandler handler;

            // Der Handler muss gesperrt werden, da ihn verschiedene Threads
            // aufrufen können.
            lock(_lockMessage)
            {
                handler = MessageFired;
            }

            // Wenn es keine Abonnementen gibt, ist der Handler NULL.
            if(handler != null)
            {
                // Jeder Abonnement kann in verschiedenen Threads benachrichtigt werden.
                Delegate[] invocationList = handler.GetInvocationList();

                foreach(MessageEventHandler eventHandler in invocationList)
                {
                    try
                    {
                        // Führe nun durch die interne Klasse den Eventhandler in allen
                        // nötigen Threads aus.
                        MessageEventNotifier eventNotifier = new MessageEventNotifier(eventHandler);
                        ThreadPool.QueueUserWorkItem(eventNotifier.Start, eventArgs);
                    }
                    // Wenn es zu einem Fehler kommen sollte, soll nichts weiter gemacht werden
                    // und nur der nächste Handler aufgerufen werden.
                    catch { }
                }
            }
        }
Beispiel #2
0
 public override void Xmpp_OnMessage(object sender, Messaging.MessageEventArgs e)
 {
     base.Xmpp_OnMessage(sender, e);
     msgFriend(sender, e);
     //RunOnUiThread(() => updateIndexUserRecentMensages(e)
     //);
     updateListCardUi();
 }
Beispiel #3
0
        void msgFriend(object sender, Messaging.MessageEventArgs e)
        {
            string friend = e.From;
            int    index  = e.From.LastIndexOf("@");

            if (index > 0)
            {
                friend = e.From.Substring(0, index);
            }

            this.msgs = getMsgs(friend);
            AppCore.Message m = new AppCore.Message(friend, e.Body, DateTime.Now, false);
            this.msgs.Add(m);
            saveMsg(friend, m);
            //RefrashRecycleView();
        }
Beispiel #4
0
 // Und die Implementierung des Empfangs
 static void MessageBroker_MessageFired(MessageEventArgs e)
 {
     // Verarbeite die Nachricht
     Console.WriteLine("Message: {0}", e.Message);
 }