Autor Beitrag
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: Do 24.07.08 16:23 
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:

ausblenden C#-Quelltext
1:
2:
 DBUpdateForm = new frmDBUpdate(clb1.CheckedItems.Count, this);
 UpdateThread = new Thread(new ThreadStart(UpdateDBOverIP));


und zeig das Form an

ausblenden C#-Quelltext
1:
 DBUpdateForm.ShowDialog();					


und starte halt den Thread dann. Aber dann passierts bei:

ausblenden 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