Forma, która otwiera inną formę ale nie kończy zdarzenia.

0

Mam następujący problem. W pierwszej formie pod przyciskiem umieściłem zadanie, które ma przeliczyć coś w bazie danych. I żeby było ładnie umieściłem na początku zadania wywołanie innej formy z treścią: "Czekaj, praca w toku..." w tym momencie powinno działać cały czas zadanie z Form1 i tu właśnie jest problem bo działanie przechodzi na tą nowo otwartą formę, a w założeniu ma być tak, że zadanie dobiega do końca w formie pierwszej gdzie po przeliczeniu powinno być coś w rodzaju Form2.Close() po czym forma2 zostaje zamknięta.
Nie mam pojęcia jak rozwiązać ten problem. Czy coś w rodzaju forma rodzic itd?

0

Pokaż fragment kodu z form1

0

event Click pod Buttonem w Form1:

Form2 FormaCzekaj = new Form2();
FormaCzekaj.Show();
//zadanie przeliczające w bazie....
//skończone przeliczanie
FormaCzekaj.Close();

Coś w tym stylu chodź wiem, że to bzdura bo otwiera się Form2 i sterowanie przechodzi do niej. Dopiero zamknięcie Form2 powraca do Form1.
Chodzi mi o to, żeby przekazać użytkownikowi wiadomość o tym, że program nie stoi tylko przelicza stąd ta Form2 z treścią o tym.
Nie chcę paskudzić Form1 jakimś progressBar bo tam po prostu nie pasuje.

0

zadanie przeliczające w bazie zrób jako nowy wątek.

0

Jest coś takiego jak status bar i progress barr.
Show() nie blokuje użycia Form1, bo to tzw. okno niemodalne. Można po pokazaniu Form2 przenieść fokus na Form1.

0

Najprościej zrobić to w ten sposób. Wywołanie na bazie umieszczasz w innym wątku. Przed startem wątku wywołujesz metodą nowe okno. Teraz pojawia się pytanie skąd masz wiedzieć kiedy wątek skończył. Otóż może to sprawdzić na dwa sposoby. Albo nawet na trzy:D, hehehe. Jeśli masz wątek w metodzie to po starcie robisz pętle while i sprawdzasz sobie czy wątek jest uruchomiony. Jeśli tak to wątek główny niech czeka sobie:). Druga opcja to użycie dalegaty lub zdarzenia. W wątku, który wykonuje zapytanie do bazy, po wykonaniu zapytania wywołujesz sobie delegata lub zdarzenie:). Trzecie opcja to używanie delegat asynchronicznych. Na codeguru możesz znaleŹć piękny artykuł o tym. Spróbuj trochę poszperać jak Ci się nie uda podeślę Ci jakiś przykładowy kod

0

duke1985 o to właśnie chodzi. Trochę jeszcze zacząłem czytać i właśnie o wątki tutaj się rozchodzi. Dzięki za pomoc.

Dla zainteresowanych, temat już był:
Forma z informacją w wątku

1 użytkowników online, w tym zalogowanych: 0, gości: 1