Wątki - synchronizacja

0

Tworzę wątek poprzez polecenie CreateThread. Niestety procedura obsługująca wątek musi się odnieść do komponentów formularza głównego aplikacji (dokłanie dodaje linijki do Memo umieszczonego na nim). Niestety sposób tworzenia wyklucza użycie Synchronize (jeśli oczywiście się nie mylę), a czasem wyskakuje mi AccessViolation (co zresztą jest logiczne). Co z tym fantem począć?

0

mylisz się. Synchronize da się <ort>uŻyć </ort>zawsze. Poczytaj o wątkach na 4p

0

Wszystko, co znalazłem na 4p dotyczące Synchronize odnosiło się do klasy TThread, której ja nie używam. Nawet TThread.Synchronize ma w argumencie TThreadMethod. Chyba, że musze sztucznie utworzyć klasę pochodną od TThread i wywoływać jej metodę poprzez TThread.Synchronize(SztucznyThread.SztucznaMetoda)...?

0

nie doczytałem, że chodzi o CreateThread. W takim wypadku masz dwa wyjścia (przynajmniej ja dwa widzę)

  1. sekcje krytyczne
  2. zamiast dłubać bezpośrednio w VCLu to wysyłać wiadomości do wątku głównego (SendMessage, PostMessage)

BTW dlaczego nie skorzystasz z klasy TThread?? Co takiego ma tworzenie ręcznie wątku czego nie ma klasa TThread (bo czego nie ma CreateThread w stosunku do klasy TThread to już wiesz)

0

Jeszcze nie wiem, ale jak się dowiem, to Ci powiem :P. A poważnie, to pamiętam, że miałem jakiś powód, żeby nie definiować nowej klasy, tylko że już nie wiem jaki :)

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