Entwickler-Ecke
Basistechnologien - Events
asoechting - Fr 30.07.10 09:56
Titel: Events
Hallo,
ich habe eine Funktion geschrieben, die, wenn sie aufgerufen wird, ein Event generiert. Eine Windows Form enthält eine Picturebox, die die über das Event-Argument übergebene Daten darstellt. Dazu rufe ich in der beim Event-Handler registrierten Methode der Form die Invalidate() Methode der Picturebox auf.
Wenn ich Programm auf meinem Rechner teste, werden die Daten dargestellt, d.h. das Event wird korrekt empfangen und verarbeitet. Führe ich dasselbe Programm nun auf einem anderen Rechner aus (beides XP und .NET 3.5), scheint das Event überhaupt nicht empfangen zu werden, was sich darin äußert, das keine Daten in der Picturebox dargestellt werden. Worin kann sich dieser Unterschied begründen?
Trashkid2000 - Fr 30.07.10 10:47
Hallo,
könntest Du mal bitte ein bisschen Code Deiner Anwendung zeigen, damit man sieht, wie Du das Event feuerst und auch einfangst?
Denn so aus dem Nichts kann, glaube ich, diese Frage bzw. der Fehler nicht geklärt werden.
MFG, Marko
asoechting - Di 03.08.10 11:19
Hallo,
hier ist der Code:
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: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92:
| protected ScannerEvent scanEvent = new ScannerEvent();
public event ScannerEvent.ScannerEventHandler ProfileReceived { add { this.scanEvent.ScannerProfileHandler += value;
}
remove { this.scanEvent.ScannerProfileHandler -= value; } }
protected void ProfileEvent(IntPtr iconBuffer, IntPtr frameGrabber, uint userData) { Console.WriteLine("Profil wird verarbeitet.");
int ret = 0; int len; double[] profileBuffer = new double[MAX_RESOLUTION];
unsafe{ fixed (double* buffer_ptr = profileBuffer) { ret = ranger.fetchProfile(buffer_ptr, &len, iconBuffer.ToPointer()); } }
if (ret == 0) { this.saveProfile(new double[MAX_RESOLUTION], profileBuffer, (uint)len); this.scanEvent.OnProfileReceived(this, new ScannerEventArgs(this.profiles[this.profiles.Count - 1])); } else { Console.WriteLine("Profildaten konnten nicht gespeichert werden."); } }
((LaserScannerDevice)scanner).ProfileReceived += new ScannerEvent.ScannerEventHandler(Program_ProfileReceived);
static void Program_ProfileReceived(object sender, ScannerEventArgs e) { Console.WriteLine("Scanner-Event: Profil empfangen"); }
public class ScannerEvent { public delegate void ScannerEventHandler (object sender, ScannerEventArgs e);
public event ScannerEventHandler ScannerProfileHandler;
public void OnProfileReceived(object sender, ScannerEventArgs e) { if(ScannerProfileHandler!=null){ ScannerProfileHandler(sender,e); } } }
public class ScannerEventArgs:EventArgs { private Profile profile;
public Profile ReceivedProfile { get { return profile; } }
public ScannerEventArgs(Profile p) {
this.profile = p; } } |
Moderiert von
Kha: C#-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!