So, heute morgen war ich auf der falschen Fährte, jetzt eine genauere Beschreibung.
Ich habe einen Datenpuffer als Klasse definiert:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| class DataBuffer { public string Name {get; set;} public byte[]Data {get; set;} public int Number {get; set;} } |
Jetzt habe ich eine Klasse in der eine Protokollbearbeitung stattfindet.
In der Klasse wird der Datenpuffer verwendet, um empfangene Daten zwischenzuspeichern und nach Ablauf eines Timers aus dem Puffer wieder herauszulesen.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| class Protocol { ... List<DataBuffer> Buffer = new List<DataBuffer>(); System.Timers.Timer TimerDatenLesen = new System.Timers.Timer(10000);
void DatenSchreiben() { this.Buffer.Add(new DataBufferer() {Name = "Test", Data = TestArray, Number = 1}); ... } void DatenLesen() { x = this.Buffer[0].Name; y = this.Buffer[0].Data; z = this.Buffer[0].Number; } void TimerDatenLesen_Elapsed(object sender, ElapsedEventArgs e) { this.DatenLesen(); } } |
Jetzt habe ich mehrere Objekte dieser Klasse Protokoll. Die unterschiedlichen empfangenen Daten werden in die jeweiligen Puffer geschrieben. Das funktioniert alles.
Das Problem:
Bei mehreren Objekten, werden beim Lesen aus dem Puffer immer aus dem Objekt die Daten gelesen, das zuletzt Daten empfangen hat.
D.h. ich verweise irgendwie immer auf einen bestimmten Datenpuffer und nicht auf den Puffer, der zu dem jeweiligen Objekt eigentlich gehört.
Beispiel:
Objekt 1 empfängt "r"
Objekt 2 empfängt "s"
Objekt 3 empfängt "t"
Timer von Objekt 1 löst aus:
Objekt 1 liest aus Puffer "t"
Timer von Objekt 2 löst aus:
Objekt 2 liest aus Puffer "t"
Timer von Objekt 3 löst aus:
Objekt 3 liest aus Puffer "t"
Ich hoffe es ist soweit verständlich, ansonsten einfach fragen. Würd mich freuen, wenn mir da jemand helfen könnte.
Gruß Gabe