Hallo Community,
ich habe eine VB Bibliothek als Adapter für die TPR Com Schnittstelle geschrieben. Unter anderem können historische Daten abgerufen und Ticks empfangen werden. Seit Donnerstag tritt beim Konsum der Ticks ein Problem auf, das ich nicht erfassen kann. Ich halte alle Watchlisten in einer Managerklasse. Diese meldet sich für die Bezahlt Events der Com Schnittstelle an, die dann an die Watchlisten/Watchlist Adapter weitergegeben werden.
Handler registrieren:
Code:
AddHandler application.DataStream.Bezahlt, AddressOf OnTick
Ticks konsumieren:
Code:
Public Sub OnTick(ByVal SymbolNumber As Integer, ByVal Price As Single, ByVal Volume As Single, ByVal Stamp As DateTime)
'RaiseEvent Tick(SymbolNumber, Price, Volume, Stamp)
End Sub
Wie man sieht, ist der Rumpf auskommentiert. wenn ich die Anwendung starte erhalte ich unmittelbar nach Eintreffen des ersten Ticks eine InvalidCastException -> Double kann nicht in DateTime konvertiert werden. Da auf den konsumierten Tick keinerlei Verarbeitung erfolgt (weil auskommentiert) und es definitiv nur diese eine Location im Code gibt, wo der Event registriert und konsumiert wird, bin ich reichlich ratlos.
Das Projekt wird mit Strict=on kompiliert, so das außerdem ausgeschlossen werden kann, das die Signatur der konsumierenden Methode den Fehler verursacht. Nun frage ich mich, wo steckt das Problem und wie kann es gelöst werden? Eine Bastellösung ist das Update der Watchlisten via Timer. Allerdings ist das ein Großangriff mit schwerem Geschütz, weil ja alle Watchlist Einträge dabei aktualisiert werden, auch die, die keine Kursveränderung haben und eine Menge an Overhead geladen wird.