AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Threading/Threadsicher???

Ein Thema von Weazy · begonnen am 19. Feb 2008 · letzter Beitrag vom 22. Feb 2008
Antwort Antwort
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#1

Threading/Threadsicher???

  Alt 19. Feb 2008, 16:21
Wie einige von euch vielleicht wissen habe ich hier meine SQX Komponente gepostet. Ich möchte nun die Operationen gethreaded ausführen. Dazu verwende ich die JVCL Thread Komponente und führe z.B die kompression durch diesen Thread (OnExecute) aus. Das Problem dabei ist dass z.B ein tLabel nicht sicher ist, d.h es kann ein Fehler (Leinwand erlaubt kein zeichen oder so) auftritt. Wie kann dass nun verhindern, also wie kann ich threadsicher arbeiten?
Philippe Wechsler
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Threading/Threadsicher???

  Alt 19. Feb 2008, 17:03
Zugriff auf VCL-Komponenten in Methoden auslagern, welche du mit Synchronize() aufrufst.

Zitat von Datei->Neu->Thread-Objekt:
{ Wichtig: Methoden und Eigenschaften von Objekten in VCL oder CLX können
nur in Methoden verwendet werden, die Synchronize aufrufen, z.B.:

Synchronize(UpdateCaption);

wobei UpdateCaption so aussehen könnte:

procedure TMyThread.UpdateCaption;
begin
Form1.Caption := 'In einem Thread aktualisiert';
end; }
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Threading/Threadsicher???

  Alt 20. Feb 2008, 10:38
Danke! Kann ich mit Thread.suspend und Thread.resume den Thread pausieren und fortsetzen?
Philippe Wechsler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.317 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Threading/Threadsicher???

  Alt 20. Feb 2008, 11:00
Zitat von Weazy:
Danke! Kann ich mit Thread.suspend und Thread.resume den Thread pausieren und fortsetzen?
Was sagt denn die Hilfe dazu?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Threading/Threadsicher???

  Alt 21. Feb 2008, 13:50
Wie kann ich denn feststellen wann der Thread fertig ist?
Philippe Wechsler
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

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

Re: Threading/Threadsicher???

  Alt 21. Feb 2008, 13:58
Zitat von Weazy:
Wie kann ich denn feststellen wann der Thread fertig ist?
Entweder du sendest eine MEssage oder löst ein Ereignis aus. Warten auf den Thread kannst du mit Waitforsingleobject.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Threading/Threadsicher???

  Alt 21. Feb 2008, 15:54
TThread bringt ein Ereignis OnTerminate mit. Wenn du dort nur den vom Thread belegten Speicher freigeben willst, kannst du aber auch einfach die FreeOnTerminate-Eigenschaft des Threads verwenden (dann aber den Thread "suspended" erstellen, bevor du die Eigenschaft setzt, oder stattdessen gleich im Constructor FreeOnTerminate setzen).
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Threading/Threadsicher???

  Alt 21. Feb 2008, 17:14
danke, OnTerminate habe ich ja glatt übersehen! Das mit suspend und resume schein zu klappen!!!
Philippe Wechsler
  Mit Zitat antworten Zitat
Benutzerbild von Weazy
Weazy

Registriert seit: 7. Apr 2005
Ort: Bern (Schweiz)
414 Beiträge
 
Delphi 2007 Enterprise
 
#9

Re: Threading/Threadsicher???

  Alt 22. Feb 2008, 16:14
Während die Funtkion getreaded ausgeführt wird ein vom Benutzer ein String abgefragt. Der Thread soll nur fortfahren wenn die Benuzer eingabe getätigt wurde oder abgebrochen wurde. Wie kann ich aus dieser funktion heraus eine funktion (nicht getreaded) ausfuhren und danach den Thread fortsetzen?
Philippe Wechsler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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