hej !
czy będąc w metodzie wątku TThread, zsynchronizowanej do aplikacji, istnieje możliwość wywołania którejś z jej metod w ramach tego wątku, a nie głównego procesu aplikacji ?
hej !
czy będąc w metodzie wątku TThread, zsynchronizowanej do aplikacji, istnieje możliwość wywołania którejś z jej metod w ramach tego wątku, a nie głównego procesu aplikacji ?
Jeśli przez zsynchronizowanie rozumiesz wykonanie metody Synchronize - to nie. Bo Synchronize oznacza: wykonaj przez główny proces.
Dlatego Synchronize jest najprostszą, ale i najgorszą chyba metodą ochrony współdzielonych danych. Może zastosuj sekcję krytyczną?
Zobacz sobie tu: http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
wydaje mi się że to co chcę zrobić nie jest jako-tako skomplikowane. pomyślałem że to co napisałem na początku wygląda dość mętnie, a można napisać o wiele prościej - czy istnieje mechanizm (wprost bądz nie) odwrotny do metody Synchronize, czyli taki, który w już zsynchronizowanej metodzie pozwala na wywołanie metody w ramach wątku...
a teraz idę poczytać co mi linknąłeś.
[EDIT]
może jeszcze przybliżę mój przypadek, bo wydaje mi się że synchronizacja jest wyjściem w sam raz, w każdym razie do pewnego miejsca.
otóż wątek coś oblicza, a następnie przekazuje wyniki do komponentów vcl formy. metoda przekazująca te wyniki jest wywołana w Synchronize(). w tej też metodzie, już zsynchronizowanej, sprawdzam czy wątek zwrócił wyniki, czy błąd. jeśli zwraca błąd, to zmieniając trochę argumenty (odpowiednio do błędu) i jakby wywołuję pewne obliczjące metody PONOWNIE, i je właśnie chciałbym znowu wywołać POZA głównym wątkiem aplikacji.