Kłopot wygląda tak:
2 wątki: główny GUI + wątek gniazdka (pochodna TServerClientThread)
W głównym wątku posiadam dynamicznie tworzony obiekt typu dajmu na to Server zawierający zmienną typu TServerSocket (ten z ScktComp)
Type
Server = class(TObject)
public
Name: String;
...
private
SS: TServerSocket;
...
End;
ServerSocket jest tworzony dynamicznie; rodzica brak; działa w trybie stThreadBlocking.
W przypadku połączenia z klientem tworzę wątek gniazdka (w zdarzeniu OnGetThread od w.w. ServerSocket) i uruchamiam pętlę odczytu.
procedure Server.GetThread(Sender: TObject; ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread);
Begin
SocketThread := Czytnik.Create(Self, False, ClientSocket);
End;
Selfa używam, by w wątku gniazdka mieć coś, przez co będę mógł się odwołać do obiektu Server (a w zasadzie do jego właściwości Name)
Mam potrzebę w pętli odczytującej (Czytnik.ClientExecute - wątek gniazdka) uzyskać dostęp do właściwości Name nadrzędnego obiektu Server...
No i właśnie... próbowałem przez
Synchronize
i jest "AccesViolation"
Próbowałem blokować wątki przez
EnterCriticalSection
i jest również "AccesViolation"...
Niezbyt uśmiecha mi się ładować do każdego wątku kopię wszystkich właściwości obiektu Server - bo to rozwiązanie najbardziej debilne i zasobożerne (Name to tylko przykładowy jeden z nich, a jest tego trochę)
Może ktoś ma jakąś ideę, jak to przekonfigurować, by miało ręce i nogi? :P
Byłbym wdzięczny :)