Hey,
also mein Problem:
Als Teil meines Programmes muss ich eine Datenbank updaten. Um den Benutzer eine Anzeige zu bieten wie lange das noch dauert hab ich also ein UpdateForm erstellt, soweit so gut. Also wird das Form beim Updaten aufgerufen, und danach ein 2ter Thread der eben die DB updated gestarted, und dem UpdateForm über Events den Status mitteilt. Das funktioniert beim erstenmal auch wunderbar.
Nachdem das Updaten das erstemal fertig ist, dispose ich die Form wieder ( DBUpdateForm.Dispose(); ) So wenn ich also das 2te mal den die DB updaten will erstelle ich mir also die Form und den Thread neu:
C#-Quelltext
1: 2:
| DBUpdateForm = new frmDBUpdate(clb1.CheckedItems.Count, this); UpdateThread = new Thread(new ThreadStart(UpdateDBOverIP)); |
und zeig das Form an
C#-Quelltext
1:
| DBUpdateForm.ShowDialog(); |
und starte halt den Thread dann. Aber dann passierts bei:
C#-Quelltext
1:
| lblOverall.Invoke(LblUpdater); |
wo halt das Lable aktualiesiert wird bringt er mir die Meldung:
"Invoke oder BeginInvoke kann für ein Steuerelement erst aufgerufen werden, wenn das Fensterhandle erstellt wurde."
Nun stellt sich mir die Frage wieso ist das so? InitializeComponent() aus dem Konstruktor der Form sollte das doch machen oder? Und wieso passiert das nur beim 2ten Aufruf der Form und nicht auch schon beim ersten?
mfg Flitzs