C# Selbsterstelltes Event: EventHandler = null


Blue_Fox

Mitglied
Hi

Wie oben schon geschrieben, hab ich das Problem, dass bei meinem selbsterstellten Event, mit eigenen EventArgs der EventHandler immer null ist!!

hier erstell ich mein Event
Code:
public event EventHandler<SerialEventArgs> SerialreceiveEvent;

        protected virtual void OnSerialreceiveEvent(SerialEventArgs e)
        {
            
            EventHandler<SerialEventArgs> serialreceiveevent = SerialreceiveEvent;
            if (serialreceiveevent != null)
            {
                serialreceiveevent(this, e);
            }
        }

Hier ruf ich es auf
Code:
 private void SerialRead(byte[] data)
        {
            byte[] message = new byte[7];
            data.CopyTo(message, 0);

            OnSerialreceiveEvent(new SerialEventArgs(message));
        }

Hier ist meine ?deklaration? (is das eine Deklaration?)

Code:
public TCPServer()
        {
            serialcom2.SerialreceiveEvent += Serialrec_SerialrecEvent; 
        }

und das ist mein Event

Code:
private void Serialrec_SerialrecEvent(object objSender, SerialEventArgs e)
        {
            HWAddress[0] = e.SerialData[0];
            HWAddress[1] = e.SerialData[1];
            HWAddress[2] = e.SerialData[2];
            HWAddress[3] = e.SerialData[3];

            int GateLightindex = ServerGatelist.FindIndex(FindrightLight);
            for (int i = 0; i < lights.Count; i++)
            {
                if (lights[i].getAddress() == ServerGatelist[GateLightindex].GetAddress())
                {
                    lights[i].setRGBRed(e.SerialData[4]);
                    lights[i].setRGBGreen(e.SerialData[5]);
                    lights[i].setRGBBlue(e.SerialData[6]);
                }
            }

            for (int i = 0; i < ServerGatelist.Count; i++)
            {
                if (HWAddress == ServerGatelist[i].GetHardwareaddress())
                {
                    udpserver.UDP_Server_Light(ServerGatelist[i].GetGroup(), ServerGatelist[i].GetAddress());
                    break;
                }
            }
        }

Und natuerlich noch die EventArgs

Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace Lightcontrol
{
    class SerialEventArgs   : EventArgs
    {
        private byte[] serdata = new byte[8];

        public SerialEventArgs(byte[] value)
        {
            serdata = value;
        }
        
        public byte[] SerialData
        {
            get { return serdata; }
            set { serdata = value; }
        }
    }
}

Ich glaub ich hab irgendwas vergessen!! nur was****

Ich hoffe ihr koennt mir weiterhelfen

mfg
Bastian
 

Akeshihiro

Erfahrenes Mitglied
Wird denn die Methode SerialRead(byte[]) überhaupt aufgerufen? Ansonsten kann ich so keinen Fehler finden, sieht eigentlich richtig aus.
 

Blue_Fox

Mitglied
Hi

ja die Methode wird aufgerufen!!

Ich scheitere an der If-Schleife in der abgefragt wird, ob der EventHandler null ist!!

an was koennte das noch liegen**** kann ich da irgendwie was mit den Klassen versemmelt haben?
 

Akeshihiro

Erfahrenes Mitglied
Es gibt keine if-Schleifen, nur if-Abfragen.

Eventuell könntest du ja diesen Code etwas ändern:
C#:
serialcom2.SerialreceiveEvent += new EventHandler<SerialEventArgs>(Serialrec_SerialrecEvent);
Etwas anderes finde ich gerade auch nicht.
 

Blue_Fox

Mitglied
Oh... Sorry!! Natuerlich is ne Abfrage!! Keine Ahnung was ich da gedacht hab.... *schaem*

Leider wars des nicht...

Koennte mir vielleicht einer erklaeren wie des mit dem Handler da ablaeuft? Ich versteh des nicht ganz.

Kann ich da irgendwas in die falsche klasse reingeschrieben haben? Die ersten 2 Ausschnitte sind in einer und die 2. Zwei in einer andern...

Die EventArgs sind eine eigene...
 

Akeshihiro

Erfahrenes Mitglied
Gibt es irgendwelche Fehler, wenn du das Programm im Debug-Modus startest? Weil jetzt wird es langsam echt kurrios. Und ist die Klasseneigenschaft serialcom2 überhaupt initialisiert? Wenn nicht, müsste es eigentlich knalln.
 

Blue_Fox

Mitglied
Hi

ne da kommen keine Fehler und keine Warnungen!!

meinst du mit der initialisierung das hier: private SERIAL2_1 serialcom2 = new SERIAL2_1();

Wenn ja dann hab ichs!!

Kann das sein, dass bei Windows CE die "CustomEventArgs" nicht funktionieren? Ich programmier das naemlich fuer ein Touchpanel!!
 

Blue_Fox

Mitglied
Ok

Dann wart ich mal... Aber danke fuer deine Schnelle Hilfe!!

Was komisch ist, das ist nicht das einzige selbsterstellte Event!! Aber das erste und einzige mit "customEventArgs"
 

Neue Beiträge