Forms in VB.NET auf dem Desktop aktiv lassen

dyta

Grünschnabel
Hallo,

mein Problem ist folgendes:
Ich habe eine VB Form, die eine Routine aufruft, mit der eine längere Datenbankabfrage ausgewertet wird.
Laufzeit des Programms ca. 50 min.
Dabei wird bei jedem Datensatz ein Labelfeld und ein ProgressBar geändert.

StartFormObj.LabelRunStatus.Text = "Current Batch: " & sBatch & iLittleBlueIndex & "..."
StartFormObj.ProgressBar.Value += 1
StartFormObj.LabelRunStatus.Refresh()
StartFormObj.Refresh()
StartFormObj.Show()

Wenn in der Zwischenzeit an dem Rechner gearbeitet wird, habe ich nur noch ein weisses
Form auf dem Bildschirm, das ein 'Not Responding' im Header stehen hat. Das Programm läuft aber trotzdem im Hintergrund weiter.
Nachdem ich den .show - Befehl hinzugefügt habe wird an der Stelle ein zweites Form geöffnet, dass genau hinter dem weissen liegt. Ich kann diesen dann zwar verschieben bzw minimieren, wenn ich es allerdings schließe wird der komplette Run abgebrochen.

Ich habe schon alles mögliche probiert (TopMost = false/true, Form.hide/show).
Unter VB 6.0 gab es eine Möglichkeit mit dem WindowHandle rumzuspielen, aber in .Net muss es doch noch andere Möglichkeiten geben.
Für Hilfe an diese Stelle wäre ich echt dankbar

Dita
 
Zuletzt bearbeitet:
Hi und willkommen im Forum

Das wäre keine schöne und elegante Lösung. Es wäre besser, wenn du deine Datenbankabfrage in einem extra Thread machst.
 
Also Prinzipiell würde ich hier auch einen eigenen Thread dafür verwenden. Die zweite Geschichte ist, dass es dir sehr viel an Performance kostet, wenn du nach jedem Datensatz Labels aktualisierst. Hier würde ich eher einen anderen Weg wählen. Alle 100 Datensätze oder so.
 
Hi,

danke für die Antworten allerdings, habe ich mich wohl etwas unklar ausgedrückt.
Die Form dient zu Eingabe der Suchparameter für den Report, dann werden verschiedene Abfragen abgeschickt, die Ergebnisse in Hashtables gespeichert und diese anschliesend ausgewertet.
Dabei soll für jeden Hashtablesatz das Label geändert und die Progressbar hochgezählt werden.
Ausserdem scheint das Problem mit den Forms generell bei länger laufenden Programmen aufzutreten.
Ich habe jedenfalls schon mehrfach Probleme damit gehabt wobei meine Anwender normalerweise an der Funktionalität interessiert waren, weshalb ich die Prio etwas herunterfahren konnte.
Trotzdem möchte ich dieses Verhalten gerne verstehen und abstellen können.
:confused:
Vielen Dank

Dita
 
Hi

Du hast dich schon richtig ausgedrückt. Die Lösung deines Problems ist immer noch ein weiterer Thread.

Der Inhalt der Form wird daher nicht angezeigt ("Keine Rückmeldung") weil die Form mit anderen Dingen beschäftigt ist und keine Zeit hat sich neu zu zeichnen.
 
Hi,

ich habe es mal mit einem neuen Thread ausprobiert und der Test sieht sehr gut aus.
Mal schauen was ich alles mit den Threads machen kann ;)

Vielen Dank für eure schnelle Hilfe

Dita
 
Zurück