Hallo Zusammen,
ich entwickle ein Datenbankprogramm das im wesentlichen aus 2 Teilen besteht. Einmal Datenimport in die DB und einmal Berichterstellung aus der DB. Den Import übernimmt eine eigene Fensterklasse, die im Fenster nur eine ProgressBar hat um den Fortschritt anzuzeigen. Den Rest macht momentan noch meine Form1.
Wenn ich jetzt den Datenimport in die DB starte, kann ich das dahinterliegende Fenster nicht aktivieren, weil ja das Fenster mit der ProgressBar darüber liegt. Ich hätte aber gerne, dass beide Fenster parallel laufen und ich auch mit der Form1 arbeiten kann, während der Import läuft.
Meine ersten Versuche gingen dahin, einen Thread zu verwenden.
mein Code (zum Testen der Threads) sieht bisher so aus:
private: System::Void Form1_Load(System:bject * sender, System::EventArgs * e)
{
ThreadTest::testth* test = new ThreadTest::testth();
Thread* tmp = new Thread(new ThreadStart(test,&ThreadTest::testth::ThreadProc));
tmp->Start();
}
public: void ThreadProc()
{
this->Show();
for(int i = 0;iprogressBar1->Maximum;i+=5)
{
this->progressBar1->Value = i;
this->Reshape;
}
}
Dadurch konnte ich immerhin erreichen, dass beides in getrennten Threads läuft. Ich kann auch das darunterliegende Fenster aktivieren. Nur wenn ich in das Fenster mit der ProgressBar zurückwechsle, wird dieses nicht neu gezeichnet, sondern es schließt sich nach Beendigung der for-Schleife wieder. Mir wärs sehr recht, wenn man jederzeit in das Fenster klicken kann, um den Fortschritt am ProgressBar abzulesen!
Vielleicht hat ja jemand einen Tipp für mich!
Vielen Dank im voraus,
Matthias