AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi TThread: MainThreadsynchronisation ohne Synchronize
Thema durchsuchen
Ansicht
Themen-Optionen

TThread: MainThreadsynchronisation ohne Synchronize

Ein Thema von sirius · begonnen am 4. Sep 2008 · letzter Beitrag vom 5. Sep 2008
 
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#1

TThread: MainThreadsynchronisation ohne Synchronize

  Alt 4. Sep 2008, 21:36
Ich weiß der Andreas hat da auch was. Aber ich will auch mal!

Ich habe eine weitere Möglichkeit zusammengebaut um einen Thread (A) mit einem Thread (B) zu snychronisieren. Dies geht aber nur ausschließlich dann, wenn der Thread A von Thread B aus gestartet wurde. Weitere "Quersynchronisationen" sind nicht möglich. Gedacht ist es um einfach einen speziellen Thread mit dem Mainthread zu synchronisieren. Dabei wurde dieser spezielle Thread auch vom MainThread gestartet. (Ich hoffe soweit ist alles klar)

In der Unit im Anhang liegt die Klasse TThreadEx, welche von TThread abgeleitet ist. Die Anwendung erfolgt über die beiden Methoden StopMainThread und ContinueMainThread:
Delphi-Quellcode:
//alles wie gehabt bei TThread:
type TmyThread=class(TThreadEx)
       protected
         procedure Execute; override;
       ...
     end;
  
...

procedure TmyThread.execute;
begin
...
    
    stopmainthread; //Hier wird der MainThread angehalten und man kann auf Variablen etc. des Mainthreads zugreifen
    try
      form1.memo1.lines.add('Hallo MainThread');
    finally
      continuemainthread; //und jetzt darf der MainThread auch wieder weitermachen
    end;
...

end;
Was sind die Vorteile gegenüber synchronize:
  1. man braucht nicht diesen umständlichen Aufruf von Synchronize, bei dem keine Variablenübergabe möglich ist
  2. diese Variante funktioniert auch in einer DLL (synchronize nicht)

Es war einfach eine Idee von mir, die ich mal ausprobieren musste. Bei meinen Versuchen klappt es ohne Probleme.


Edit 1+2: neue Version, jetzt würde der Mainthread auch bei einem plötzlichen Ende (Exception, Error) des SubThreads weiterlaufen
Angehängte Dateien
Dateityp: pas uthreadex_480.pas (3,6 KB, 57x aufgerufen)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz