Wątki i kłopoty z VCL...

0

Witam, mam aplikację wielowątkową no i nie mogę sobie poradzić z pewnym
błędem który wyskakuje już po pomyślnym skompilowaniu projektu:

Canvas does not allow drawing

dzieje się tak gdy w osobnym wątku próbuje stworzyć nową formę.
(forma ta ma wyświetlać postęp wysyłania pliku)

Oczywiście do wywołania tego błędu wcale nie trzeba formy, wystarczy
w osobnym wątku wstawić ShowMessage().

Próbowałem też tworzyć drugą formę od razu, a wątku ją tylko uwidoczniać
ale w tej sytuacji przy zamknięcie programu wyskakiwał błąd:

Nieprawidłowe dojście okna

Czy ktoś wie co z tym zrobić ?

0

Błagammm o pomoc ;-( ;-( ;-(

Nikt nie wie jak pogodzić wątki i obsługę VCLa, może to trzeba jakoś zsynchronizować ?

0

W ksiązce delphi 6 Vademecum Profesjonalisty jest coś o tym, tyle że tam pisze że dostep do komponentów VCL moze odbywac sie tylko w ramach wątku głownego procesu, chociaz są od tego wyjątki - i te własnie wyjątki sa tam opisane. Z moich pomysłów :) to możnaby stworzyć w głownym watku okno, i jeżeli nie da się wywoływac w nim włąsciwości i procedur z wątku pobocznego to wysyłać z niego komunikaty.

0

Można.. jest dużo na ten temat w książce "Delphi 6: Vademecum programisty".. miałem tą książke jeszcze niedawno ale poszła razem z formatem dysku .. - sprawdź jak masz takową..

// Dominik - byłeś szybszy :D

0

Z moich pomysłów :) to możnaby ...

hmm... nie zrozumiałem dokładnie o co ci chodziło ale pomysł z komunikatami był dobry.
W wątku wysyłam własny komunikat do głównego okna, a w procedurze obsługującej
go, pokazuje nowe okno i dzięki temu nie mam już problemów z serią dziwnych błędów...

serdeczne dzięki...

0

Póbowałeś "synchronize()"?

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