Object ist plötzlich nothing...

  • VB.NET
  • .NET (FX) 4.0

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Object ist plötzlich nothing...

    Moin Forum,

    bin ein wenig ratlos. In einem Teil meines Programmes, der schon seit Urzeiten perfekt läuft, taucht plötzlich ein Objekt auf, welches ab und an plötzlich nothing ist.

    In einem Form wird die Klassenwariable

    VB.NET-Quellcode

    1. Private Property MyProjectData As ProjectData

    gesetzt. In der

    VB.NET-Quellcode

    1. Load_Form
    Procedure wir ihr der Wert vom Main Form übergeben bzw. von dort geholt. Wenn das Objekt dann Nothing ist, wird das Form gleich wieder geschlossen.

    VB.NET-Quellcode

    1. MyProjectData = MainForm.GetProjectData()
    2. If (MyProjectData Is Nothing) Then
    3. Me.Close()

    Es ist die einzige Zuweisung der Variable - sonst wird sie nur 'gelesen'.

    Nun habe ich eine paar Sachen in der Form ergänzt und plötzlich taucht der Fehler auf.

    Weiß jemand rat?
    Kann man einen "Watchdog" erstellen, der immer dann das Programm anhält, wenn eine Variable einen bestimmten Wert annimmt?

    Danke schon mal im Vorraus
    Tukuan
    Moin,

    setze mal Haltepunkte an der Seite und steppe da durch.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Vermutlich von mir zu undeutlich geschrieben... Sorry.

    Das Programm läuft normal (4,5 oder mehr durchgänge). Um das tun zu können muss das betreffende Objekt gültig sein. Also ungleich Nothing.
    Plötzlich (beim 6.7. oder wann auch immer Durchlauf) ist das Objekt auf einmal Nothing und das Programm kann dann nichts mehr machen.
    Ich habe zurzeit noch keine Ahnung warum dieses passiert...

    Es gibt somit keinen Punkt den ich nehmen kann, um zu debuggen..
    Na klar? Dann halt die entsprechende Schleife.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Der Prozess wird durch den User angesoßen - ist keine Schleife...
    - Fenster ist offen, User kann Eingaben tätigen
    - Wenn neue Datei zur Berechnung zur Verfügung steht, clickt der User auf "Berechnen"
    Dann setze da halt irgendwo am Anfang Deinen Haltepunkt, wo ist das Problem? ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Du kannst überall in deinem gesamten Code einen Breakpoint setzen und dann alles Schritt für Schritt durchgehen.
    Am effizientesten ist hier wahrscheinlich beim Setter der Eigenschaft einen Breakpoint zu setzen. Wenn dann der neue Wert (Nothing) kommt, dann kannste einfach im Callstack zurück gehen und schauen woher der Mist kommt.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Das Problem was ich zunächst hatte, ist durch den Hinweis mit dem Callstack vielleicht gelöst. Muss mal schauen, ob mir das weiterhilft.

    Das mit dem Breakpoint und dem schrittweise durchtackern kenn ich schon - so rookie bin ich dann doch nicht.

    Aber ein Tool in VS welches Variablen überwacht gibt es nicht, oder?

    ErfinderDesRades schrieb:

    bedingte Haltepunkte setzen

    @Tukuan Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    ErfinderDesRades schrieb:

    Wenn du den Code seiner Property einstellst, dann kann ich dir eine Modifikation zeigen, die wie ein Watchdog arbeitet.

    Gerne. Freue mich immer, wenn ich was neues Lerne.

    RodFromGermany schrieb:

    @Tukuan Gugst Du hier.

    Das klinget vielversprechend... Das schau ich mir mal an... Danke schon mal im Voraus.

    Ansonten: Klar hab ich mir auch schon gedacht, dass ich bei den neuen Sachen Schrott eingebaut habe.
    Aber ich finde den Fehler halt nicht. Es sind nur ein paar Labels, RadioButtons und Buttons hinzugekommen. Die greifen eigentlich nicht auf die Variable... Eigentlich...

    :cursing: :cursing:
    Fehler gefunden... Fehler 50 war... 50 cm vorm Bildschirm lag er 8)
    Aber ich habe immerhin was über Debugmethoden gelernt.
    Erfinder des Rades: Könntest du mir noch mal deinen Vorschlag erläutern...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Tukuan“ ()