GUI friert ein...
-
Hallo leute,
Ich habe das problem das mein GUI immer einfriert wenn etwas gemacht wird!
z.B. wenn ich ein Button drücke um etwas aufs Netzlaufwerk zu kopieren, friert er ein bis es fertig kopiert ist.
Wie kann ich es umgehen??
gruss
Thasi
-
Lass zeitintensive Arbeiten in einem eigenen Thread laufen, dann ist dein GUI weiterhin bedienbar.
-
wie matze schon schrieb ... entweder System::Threading::Thread und mit Delegaten auseinander setzen ... oder die BackgroundWorker-Componente verwenden ... ich empfehle Ersteres
-
Vielen Dank,
Ich werd mal versuchen mit Thread, aber wie kann ich eine Methode in ein Thread umwandeln?
Habt ihr vieleicht ein Beispiel dafür?
Thasi
-
Wenn möglich würde ich mit dem APM arbeiten (BeginXXX(..) EndXX(..) Methoden).
-
Hallo Zusammen,
Es geht irgendwie nicht...
ich bekomm die Fehlermeldungen beim Compilieren:
error C2102:'&' requires |-value
error C3350: 'System::Threading::ThreadStart' : a delegate construcotr expect 2 argument(s)Code:
ThreadStart^ threadDelegate = gcnew ThreadStart (&Klassenname::Methode(Argument)); Thread^ newThread = gcnew Thread (threadDelegate); newThread^->Start();
Wenn ich den '&' auslasse kommen noch mehr Fehlern!!!
gruss
-
Ich nehme an das Du innerhalb eines Objekts der Klasse Klassenname bist.
Weiter nehme ich an dass Klassenname::Methode eine nicht statische Methode ist.Dann musst Du beim erzeugen des Delegat Objekts noch ein Tracking Handle auf ein Objekt vom Typ Klassenname mitgeben.
Ausserdem musst Du eine argumentlose Methode nehmen oder einen andernen Delegaten.
ThreadStart^ threadDelegate = gcnew ThreadStart (this, &Klassenname::Methode);
Simon
-
Hallo Theta,
Vielen Dank für deine Antwort.Ich komm nicht ganz draus was du meinst...
Ich schildere mein problem nochmals...
Ich habe eine separate klasse erstellt mit 2 Methoden die ich jetzt
als ein Thread aufrufen möchte...Ich habe es so programmiert das beim Klick auf einen Button die Methode aufgerufen wird, sobald die Methode ausgeführt wird friert das Gui ein. Nachdem die Methode seine Arbeit durchgeführt hat, ist alles wieder normal.
Jetzt will ich beim klick auf den Button den Thread ausführen lassen, damit mein GUI nicht einfriert...
gibt es vielleicht auch andere Möglichkeiten das ganze Programm irgendwie flüssig zu halten?
Backgroundworker klappt irgendwie auch nicht!
gruss,
Thasi