AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TThread-Execute wird nicht ausgefürhrt warum ?
Thema durchsuchen
Ansicht
Themen-Optionen

TThread-Execute wird nicht ausgefürhrt warum ?

Ein Thema von mimi · begonnen am 30. Jul 2004 · letzter Beitrag vom 30. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 11:38
Hallo,
ich habe ein problem beim erzeugen von einem TThread Object.
so erzeuge ich ihn:
Delphi-Quellcode:
procedure TSound.TInit;
var
  t:TSoundWihle;
begin

  t:=TSoundWihle.Create(True);
  t.onE:=onE;
  t.Priority := tpLower;
  t.Resume;

end;

mein unit für das TThread-object:
Delphi-Quellcode:
unit wihle;

interface

uses
  Classes;

type
  TE = procedure of Object;
  TSoundWihle = class(TThread)
  private
    { Private-Deklarationen }
  protected

  public
    onE: TE;
    procedure Execute; override;
  end;

implementation


{ TSoundWihle }

procedure TSoundWihle.Execute;
begin
  while Terminated = True do begin
    onE;
  end;

end;

end.
problem ist:
ich muss ein ereignis immer ausführen damit in diesem ereignis checkPlay meiner sound unit ausgeführt werden kann.... warum wird jetzt Execute nicht ausgeführt?
TInit wird aufgerufen, nachdem die sound klass komplet geladen ist !!!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 11:40
Wie wäre es mit
Code:
procedure TSoundWihle.Execute;
begin
  [color=#ff0000]while not Terminated do begin[/color]
    onE;
  end;

end;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 11:51
keine änderung habe ich bekomme jetzt dafür beim beenden eine fehlermeldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt BreakOut.exe ist eine Exception der Klasse EOSError aufgetreten. Meldung: 'Systemfehler. Code: 5.
Zugriff verweigert'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
das problem ist excute wird noch nicht mal ausgeüfhrt !!!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 11:51
Mal ne kleine Nebenfrage:

Muss man die property FreeOnTerminate nicht noch setzen?

Delphi-Quellcode:
procedure TSound.TInit;
var
  t:TSoundWihle;
begin

  t:=TSoundWihle.Create(True);
  t.onE:=onE;
  t.Priority := tpLower;
  t.OnTerminate := DoMyTerminate() // <---
  t.FreeOnTerminate := True bzw. False; // <---
  t.Resume;

end;

ist ist sie standardmäßig false?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 12:03
jetzt bekomme ich beim beenden:
Code:
---------------------------
Anwendungsfehler
---------------------------
Exception EAccessViolation in Modul BreakOut.exe bei 00000000.

Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000.


---------------------------
OK  
---------------------------
diesen fehler !!!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#6

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 12:08
Zitat von mimi:
keine änderung habe ich bekomme jetzt dafür beim beenden eine fehlermeldung:
Was Du so keine Änderung nennst

Dein Problem ist, daß Du den Thread mit Deiner Anwendung syncronieseren musst. Suche dazu mal nach Hier im Forum suchenSynchronize

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 12:23
kein beitrag konnte mir weiter helfen
kannst du mir ein beispiel schreiben, was mit Synchronize arbeitet ???
weil das habe ich auch aus Luckis tutor nicht richtig verstanden !!!!
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 14:46
Wenn du aus deinem Thread heraus auf Properties und Variablen eines anderen Threads (z.B. Controls auf dem Formular) zugreifst, so müssen diese Zugriffe synchronisiert werden. Die Zeilen die den Zugriff machen musst du in eine eigene Methode deiner Threadklasse packen, und mit Synchronize(MethodenName); aufrufen. Sonst kann es knallen.

gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 15:10
ich habs jetzt so gemacht:
Delphi-Quellcode:
procedure TSoundWihle.Execute;
begin
  while not Terminated do begin
    Synchronize(onE);
  end;

end;
nur jetzt hängt sich das progamm auf, und spielt die musik einfach weiter ab, macht aber sonnst nichts mehr
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: TThread-Execute wird nicht ausgefürhrt warum ?

  Alt 30. Jul 2004, 15:31
Ist auch logisch . Das Synchronized veranlasst, dass die Methode im Hauptthread der Anwendung ausgeführt wird! Deshalb kann man sich, so wie du es einsetzt, so alle Vorteile von einem Thread mit einem Schlag zu Nichte machen.
Du solltest INNERHALB deiner Methode alle Zugriffe die auf andere Threads passieren EINZELN Synchronized machen, nicht die ganze Methode!

Solche Synchronized-Aufrufe sollte man so sparsam wie möglich einsetzen, und im Zweifelsfall das Vorgehen im Thread überdenken, da er dir sonst nichts bringt.

,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:22 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