Răspuns la întrebarea nr. 53750

Fire Threads

Bine ai venit!
Noi înșine nu suntem locali, vă ajutăm decât puteți, oameni buni.

Făcând clic pe elementul din meniu, CreateThread creează un fir, pornește o procedură care efectuează unele calcule și arată o fereastră cu o bara de progres pentru afișarea fluxului procesului.







procedura TMainForm.Action8Execute (Expeditor: TObject);
var
x: Cardinal;
pr: Pointer;
începe
pr: = @ TMainForm.anythread;
CreareThreadă (zero, 0, pr, zero, 0, x);
se încheie;

procedura TMainForm.anythread;
var
i: întreg;
număr: întreg;






începe
FormProgress.Show;
număr: = 10000;
FormProgress.ProgressBar1.Max: = număr;
pentru i: = 0 pentru a conta
începe
FormProgress.ProgressBar1.StepIt;
se încheie;
FormProgress.Close;
se încheie;

Crearea unei ferestre cu o bară de progres are loc în timpul fazei de lansare a aplicației.

începe
Application.Initialize;
Aplicație.CreateForm (TMainForm, MainForm);
Application.CreateForm (TFormProgress, FormProgress);
Application.Run;
end.

Problema este următoarea:
Când se închide formularul principal de cerere, apare o eroare

Excepție EOSError în modul _____. Exe la ______
Eroare de sistem. Cod: 1400.
Mâner fereastră nevalid.

Dacă același lucru se face direct din procedura de apelare a meniului (fără fir), nu apare o astfel de eroare. Ie după deschiderea și închiderea ferestrei din fir, fereastra modifică mânerul. Cum să o salvați înainte de a apela firul, apoi să îl eliberați corect?

Urmăriți răspunsurile la această întrebare prin RSS







Articole similare

Trimiteți-le prietenilor: