Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Programm scheint beim Debuggen weitere Schritte im Hintergrund auszuführen
Späteinsteiger
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Hamburg

Themenstarter:

Programm scheint beim Debuggen weitere Schritte im Hintergrund auszuführen

beantworten | zitieren | melden

Moin
Ich bin gerade an einem Punkt, an dem ich verzweifel.

Im Web habe ich "A fast CSV.Reader" von Sebastien Lorion gefunden und kämpfe mich dort durch.

Mein Ziel dabei, die Vorgehensweise zu verstehen und mir selbst eine abgespeckte Version zu basteln.
Ich weiß, das es alles Fertig gibt, jedoch soll es für mich mehr zur Übung dienen. Dafür möchte ich das Rad noch mal neu erfinden.

Ich habe meinen Reader soweit, das ich per Indexer auf die Daten zugreifen kann und z.B. einem DataGridView übergeben kann.

Bei der Anweisung:

    string str1 = X[0];
    string str2 = X[1];

liest der Reader allerdings im Hintergrund schon mit jedem Debuggerklick (so scheint es) weitere Datenzeilen ein, obwohl ich von der Programmlogik keine Methode aufrufe, die dazu führt eine neue Zeile einzulesen. Hier ist mein Programm irgendwie schon ein paar Schritte weiter, als ich will.

Hier passiert etwas im Hintergrund, was ich mir nicht erklären kann. Auch im Web finde ich hierfür nur Lösungen, die auf Lock oder Thread basieren.

Da ich mit meinen bescheidenen Kenntnissen hier am Ende bin, brauch ich eure Hilfe.

Wie kann ich diese ungewollte Vorgehensweise verhindern, ohne Lock oder Thread zu verwenden?

Wie erkenne ich Methoden, die Synchron oder Asynchron laufen?

...

Ist mein erster Post in diesem Forum. Also bitte verzeiht mir meine Fehler

Vielen dank im voraus

Der Späteinsteiger
Eigentlich bin ich ganz anders, ich komme nur so selten dazu.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.310

beantworten | zitieren | melden

Benutze den Debugger um Code und dessen Funktionsweise zu verstehen.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Du kannst hier ja Schritt für Schritt alles durchgehen. Was ein "Debuggerklick" sein soll, was Du beschreibst, weiß ich aber nicht. Daher weiß ich nicht, ob Du überhaupt richtig debuggst.

Ob eine Methode in einem Thread laufen erkennst Du im Debugger. Es gibt ein Threadfenster in Visual Studio.
Ansonsten siehst Du ja im Code wie eine Methode aufgerufen wird.
private Nachricht | Beiträge des Benutzers
Späteinsteiger
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Hamburg

Themenstarter:

beantworten | zitieren | melden

Hallo Abt

Ich bin die Codeabschnitte im Einzelschritt durchgegangen und im Überwachungsfenster festgestellt, das hier irgendetwas im Hintergrund passiert.

Wo die Daten verändert werden, habe ich lokalisiert, indem ich dort einen Haltepunkt gesetzt habe. Jedoch verstehe ich nicht, wie mein Programm dort hinkommt.
Eigentlich bin ich ganz anders, ich komme nur so selten dazu.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.310

beantworten | zitieren | melden

Das kannst Du dem Stacktrace entnehmen. Das ist im Debugger Artikel beschrieben.
Du musst aber den Code des CSV Readers einbinden und nicht die DLL. Du kannst hier dann absolut alles, ausnahmslos Schrittweise durchgehen.
private Nachricht | Beiträge des Benutzers
Späteinsteiger
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Hamburg

Themenstarter:

beantworten | zitieren | melden

Ok Danke Abt

Nun habe ich zumindest mal einen Anhaltspunkt und ein Stichwort, an dem ich wieder ansetzen kann.
Eigentlich bin ich ganz anders, ich komme nur so selten dazu.
private Nachricht | Beiträge des Benutzers
TheBrainiac
myCSharp.de - Member

Avatar #avatar-3152.png


Dabei seit:
Beiträge: 795
Herkunft: /dev/null

beantworten | zitieren | melden

So wie das in deinem Code-Beispiel aussieht, rufst du einen Indexer X[0] auf. Diese werden (wie Properties auch) beim Debuggen automatisch übersprungen, wenn das entsprechend Konfiguriert wurde. Das kannst du in den Debugger-Einstellungen irgendwo ausstellen.

LG,
Christian.
There are 10 types of people in the world:
Those, who think they understand the binary system
Those who don't even have heard about it
And those who understand "Every base is base 10"
private Nachricht | Beiträge des Benutzers
Späteinsteiger
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Hamburg

Themenstarter:

beantworten | zitieren | melden

Hallo Christian

Hab mit den Einstellungen rumprobiert. Leider ohne Erfolg.

Die .Exe gibt das gleiche Ergebnis wie die gedebuggte Version.

Aber trotzdem vielen dank für Deine Idee.

Stacktrace nun mein Strohhalm ;-)
Eigentlich bin ich ganz anders, ich komme nur so selten dazu.
private Nachricht | Beiträge des Benutzers
Späteinsteiger
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Hamburg

Themenstarter:

beantworten | zitieren | melden

Fehler gefunden...

rekursiver Methodenaufruf gepaart mit [DebuggerNonUserAttribut]

Danke für eure Denkanstöße
Eigentlich bin ich ganz anders, ich komme nur so selten dazu.
private Nachricht | Beiträge des Benutzers