Skocz do zawartości
wasst

[builder C++] Wątki I Dynamiczne Tworzenie Formularzy

Rekomendowane odpowiedzi

Naciśnięcie przycisku na głównej formatce uruchamia funkcję „monitor” jako nowy proces. Funkcja monitor co pewien czas (w pętli while) tworzy nowy proces wywołując funkcję „okno”. Funkcja „okno”, za każdym wywołaniem, dynamicznie tworzy nowy formularz. W tej samej chwili może być więc kilka nowoutworzonych formularzy. W celu zwolnienia pamięci, przydzielonej wcześniej nowotworzonemu oknu, przy zamykaniu nowoutworzonych formularzy w zdarzeniu „OnClose” wpisałem Action = caFree;. Zamknięcie programu powoduje błąd debugera. Przypuszczam, że jest to spowodowane nieprawidłowym zwalnianiem pamięci. Ponizej podaje kod programu.

 

Unit1.cpp //Główne okno aplikacji//---------------------------------------------------------------------------int __fastcall okno(Pointer Parameter){   TForm2 * MyForm = new TForm2(Application);   MyForm->ShowModal();}//---------------------------------------------------------------------------int __fastcall monitor(Pointer Parameter){  int a=0;   while (a<3)  {	   W_ID3 = BeginThread(NULL, 0, okno, monitor, 0, W_PD3);	   Sleep(5000);	   a++;   }}//---------------------------------------------------------------------------void __fastcall TForm1::SpeedButton1Click(TObject *Sender){   W_ID1 = BeginThread(NULL, 0, monitor, this, 0, W_PD1);}//---------------------------------------------------------------------------

Unit2.cpp //Nowotworzone okna//---------------------------------------------------------------------------void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action){   Action = caFree;		}//---------------------------------------------------------------------------

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...