Einloggen Suche | Aktive Themen
Arrayloader überspringt Titel Optionen
Martin Prischmann
Geschrieben: Wednesday, September 23, 2015 10:02:23 AM
Gruppen: Kunde

Beiträge: 9

Hallo,

in einer in C# entwickelten Anwendung lese ich aus meinem TP-Realtime Abo über das Jahreschart Daten aus. Dabei ist mir in den letzten Tagen ein seltsames Verhalten aufgefallen, vielleicht ist es die Ursache für einige der Probleme, die ich mit dem Laden der Daten aus TP gehabt habe.

Wenn ich eine größere Watchlist aus TP in meinem Programmen im Debug-Mode lade kann ich schön sehen, wie ein Titel nach dem anderen sauber verarbeitet wird. Wenn ich meine Anwendung aber im Release-Mode erstelle überspringt die Anwendung einfach einen nicht unterheblichen Teil der Titel. Fast so als wäre die Anwendung zu schnell(?). Aber kurze Pausen in das Programm einzubauen hat leider auch nicht geholfen. Die einzige Garantie ist bisher im Debug-Mode zu arbeiten.

Ist dieses Phänomen bekannt? Gibt es vielleicht Abhilfe?

Gruß

Martin Prischmann
Daniel Beyersdorf
Geschrieben: Thursday, September 24, 2015 11:25:42 AM

Gruppen: Mitarbeiter

Beiträge: 54

Tai-Pan RealtimeTai-Pan End-of-Daymarket makerbis. Realtime-Terminal
Hallo Herr Pirschmann,

Das Problem tritt auf, wenn die Elemente des Array-Loaders per "foreach" abgerufen werden.
Die Ursache ist ein Verhalten des .net-GarbageCollectors im Fall von COM-Objekten leider zu früh Objekte zerstört.

Beispiel Problem:
Code:
BarChartCollection barchartCol = loader.Periodencharts(arrSymbolNrIntraday, 600, 100) as BarChartCollection;
foreach (BarChart BChart in barchartCol)
{
    // Work
}


Beispiel Lösung:
Code:
BarChartCollection barchartCol = loader.Periodencharts(arrSymbolNrIntraday, 600, 100) as BarChartCollection;
for (int nIndex = 0; nIndex < barchartCol.Count; ++nIndex)
{
    BarChart BChart = barchartCol[nIndex + 1];
    // Work
}


ACHTUNG!:
COM Aufzählung sind nicht 0 Based. COM Aufzählungen beginnen immer bei Index 1.
Der Zugriff auf die Daten muss so lauten: BarChart BChart = barchartCol[nIndex + 1];

Viele Grüße,
Daniel Beyersdorf


Entwicklung | Lenz+Partner GmbH | vwd group
Phone: +49 231 9153-300 | Fax: +49 231 9153-399
entwicklung@lp-software.de | www.LP-software.de | www.vwd.com
Martin Prischmann
Geschrieben: Thursday, October 1, 2015 3:23:34 PM
Gruppen: Kunde

Beiträge: 9

Hallo Herr Beyersdorf,

danke für den Hinweis, es hat geholfen. Jetzt werden nicht nur alle Titel gelesen, ich habe den Eindruck, dass die Performance ebenfalls besser ist.

Die Performance mag unter einem unorthodoxen Programmierstil besser werden, leider sind die negativen Auswirkungen aber nicht zu unterschätzen.

Herzlichen Dank für ihre Hilfe

Martin Prischmann
Martin Prischmann
Geschrieben: Thursday, October 15, 2015 12:41:33 PM
Gruppen: Kunde

Beiträge: 9

Hallo Herr Beyersdorf,

ich habe übrigens gerade in dem von ihnen ausgelieferten Beispielcode zum ArrayLoader gestöbert. Und dort wird noch als gutes Vorbild mit foreach gearbeitet. Ich hatte meinen Code damals von dort kopiert.

Es wäre vielleicht gut den Code dort anzupassen und die Kunden zu informieren. Solche Fehler lassen sich durch den End-Programmierer leider nur mit EXTREM hohen Zeitaufwand finden - ich versuche ja auch nicht Windows zu debuggen.Whistle

Herzlicher Gruß

Martin Prischmann
Benutzer die diese Diskussion aktuell lesen
Guest

Powered by Yet Another Forum.net version 1.9.1.8 (NET v4.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.

Durch die Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zum Datenschutz finden Sie hier