ich muss desöfteren sehr große Dateien mit VB bearbeiten und verwende zur Statusanzeige ein Label - Steuerelement, das die aktuelle Zeilenposition in der Textdatei anzeigt.
Unter VB.Net nun funktioniert das ganze nur für ein paar tausend Zeilen. Danach schaltet die Aktualisierung meines Labels einfach ab. Das Programm läuft ohne Probleme weiter, auch das Label wird mit label1.text „Zeile Nummer“ & zeilenummer weiter gefüllt. Nur am Form passiert nichts.
:Verstehe ich nicht ganz, was denn nu?
Ich verwende das Label als Statuslabel in welcher
Zeile sich das Programm derzeit befindet. Jedesmal wenn
eine Zeile in der Textdatei bearbeitet wurde, wird der
Inhalt des Labels um +1 erhöht. Das funzt ca. 4000 mal
(geht ziemlich schnell). Irgendwann steht die Anzeige in
der Form obwohl im Code der Inhalt des Labels weiter hochgezählt wird.
:Verstehe ich nicht ganz, was denn nu?
Ich verwende das Label als Statuslabel in welcher
Zeile sich das Programm derzeit befindet. Jedesmal wenn
eine Zeile in der Textdatei bearbeitet wurde, wird der
Inhalt des Labels um +1 erhöht. Das funzt ca. 4000 mal
(geht ziemlich schnell). Irgendwann steht die Anzeige in
der Form obwohl im Code der Inhalt des Labels weiter
hochgezählt wird.
Könntest du mir den Codeabschnitt posten? Bei mir funktioniert das ohne Probleme bis 400000 (und wahrscheinlich höher). Woher weißt du, dass der Inhalt des Labels (unter der Oberfläche) weiter hochgezählt wird? Schonmal versucht, explizit Label.Invalidate() aufzurufen, um die Anzeige des Labels zu aktualisieren?
Ich glaube, du zählst das Label.Text um 1 hoch. Dabei finden implizite Typkonvertierungen statt, die vielleicht nicht ganz funktionieren. Lasse eine Integer-Variable hochlaufen und schreibe deren Wert in das Label:
Set i as Integer
…
i = i + 1
myLabel.Text = i.ToString()
…
Vermutlich liegt es daran, dass nach einer weile das form keine zeit mehr hat das label korrekt aufzubauen.
Versuch mal nach dem setzen im label folgendes: