AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Threads (Beschreibung zu lang, siehe Text) ;)
Thema durchsuchen
Ansicht
Themen-Optionen

Threads (Beschreibung zu lang, siehe Text) ;)

Ein Thema von tomaten · begonnen am 7. Jan 2006 · letzter Beitrag vom 7. Jan 2006
Antwort Antwort
Benutzerbild von tomaten
tomaten

Registriert seit: 19. Jun 2005
118 Beiträge
 
Delphi 2005 Architect
 
#1

Threads (Beschreibung zu lang, siehe Text) ;)

  Alt 7. Jan 2006, 18:19
Hallo, ich habe eine Klasse, die im Hauptthread der Anwendung erzeugt wird. Eine Funktion der Instanze dieser Klasse wird aus anderen Threads aufgerufen. Diese wiederum soll eine private Funktion der Klasse im Hauptthread aufrufen. Es ist wichtig, dass aus dem Aufruf aus dem anderen Thread wieder ein Aufruf im Hauptthread erfolgt. Ich habe das z.Zt. mit Windows Nachrichten gelöst. Läuft auch einwandfrei. Nun wollte ich fragen, ob es eine Möglichkeit der Lösung ohne SendMessage gibt? Ich finde das irgendwie "unelegant".
  Mit Zitat antworten Zitat
jenbru

Registriert seit: 23. Dez 2005
5 Beiträge
 
Delphi 7 Professional
 
#2

Re: Threads (Beschreibung zu lang, siehe Text) ;)

  Alt 7. Jan 2006, 18:50
Hallo,

warum ist es wichtig den Aufruf der privaten Methode an den Hauptthread zu deligieren? Zu
Synchronisationszwecken? Wenn ja, und wenn die private Methode deiner Klasse keine Aufrufparameter besitzt, könntest Du sie in einen Aufruf der statischen Synchronize-Methode der TThread-Klasse verpacken. In etwa so:


Delphi-Quellcode:
type
 TMyClass = class(TObject)
 private
   procedure PrivateMethod;
 public
   procedure PublicMethod;
 end;

...
procedure TMyClass.PublicMethod;
begin
 //Private Methode synchronisiert aufrufen
 TThread.Synchronize(nil, PrivateMethod);
end;

Das ist allerdings nicht ganz ungefährlich. Wenn die öffentliche Methode der Klasse nicht aus
einem Thread aufgerufen wird, kann es passieren, dass der Synchronize-Aufruf den Hauptthread lahmlegt.

Gruß,
Jens
Jens Brünnler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Threads (Beschreibung zu lang, siehe Text) ;)

  Alt 7. Jan 2006, 18:51
es gibt noch syncronize was aber so ziemlich aufs gleiche hinausläuft. bzw. warum sendest du messages? In manchen fällen reicht es auch einfach schon mit critical-sections zu arbeiten.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von tomaten
tomaten

Registriert seit: 19. Jun 2005
118 Beiträge
 
Delphi 2005 Architect
 
#4

Re: Threads (Beschreibung zu lang, siehe Text) ;)

  Alt 7. Jan 2006, 19:28
Zitat von SirThornberry:
es gibt noch syncronize was aber so ziemlich aufs gleiche hinausläuft. bzw. warum sendest du messages? In manchen fällen reicht es auch einfach schon mit critical-sections zu arbeiten.
Nein es geht nicht darum das Ganze threadsicher zu machen, sondern es muss im HauptThread laufen. Hat was mit dem Aufruf von ASP.NET aus Win32 zu tun (mein eigener HTTP-Server, muss auch Win32 bleiben, vorerst).

@jenbru

Es ist sicher, dass es in einem Thread aufgerufen wird. Allerdings dürfte Synchronize da langsamer sein, arbeitet ja auch nicht viel anders.

Zitat:
Da die Methode Synchronize die Botschaftsschleife verwendet ...
Dann muss es wohl so gehen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz