Einzelnen Beitrag anzeigen

Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#12

AW: Weitere Synchronisierungsmöglichkeiten ?

  Alt 14. Aug 2011, 16:32
Aus meiner Sicht wäre die einfachste Lösung einfach vor dem Betreten der CS anzufragen, ob man sich im Hauptthread befindet und nur wenn nicht den Lock zu setzten und später wieder zu öffnen. Nur irgendwie kommt mir dies ein bisschen komisch vor, denn warum hat man dies dann nicht gleich in die CS-Komponente integriert?
Um das nachträglich einzubauen kann man ja auch ganz einfach mit einer abgeleiteten Klasse arbeiten, so hält sich der Aufwand in Grenzen.

Delphi-Quellcode:
procedure TIMemo.SetValue(A: string);
begin
  if not(GetCurrentThreadId = MainThreadID) then
    FMultiReadExclusiveWriteSynchronizer.BeginWrite;
  try
    FMemo.Lines.Text := A;
  finally
    if not(GetCurrentThreadId = MainThreadID) then
      FMultiReadExclusiveWriteSynchronizer.EndWrite;
  end;
end;
Sebastian
  Mit Zitat antworten Zitat