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 2 von 2     12   
mimi

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

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

  Alt 30. Jul 2004, 15:35
verstehe ich nicht ganz, wo deiner meinung nach sollte ich es machen ???
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
 
#12

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

  Alt 30. Jul 2004, 16:28
Wenn z.B. in der Methode "onE" eine Zeile: "Form1.Memo1.Lines.Clear;" vorkommt, dann schreib dir dafür eine eigene Methode - z.B.:
Delphi-Quellcode:
procedure TMyThread.ClearLines;
begin
  Form1.Memo1.Lines.Clear;
end;
und in der Methode "onE" dann aufrufen mit:
Delphi-Quellcode:
procedure TMyThread.onE;
begin
.
.
  Synchronized(ClearLines); // an Stelle von Form1.Memo1.Lines.Clear;
.
.
end;
Das Problem ist, dass du in deinem Thread ja NUR die Methode "onE" ausführst, und wenn diese dann komplett Synchronized ausgeführt wird, dann wird dein 2. Thread vollständig im Hauptthread ausgeführt, was man ja gerade mit Threads verhindern will. Also sollte an so wenig Stellen wie möglich Synchronized werden.

Zeig doch wenn es noch nicht klar ist die "onE" - evtl. kann man's am konkreten Bsp. besser erklären.


dizzy

\\edits: Schlechtschreibdinger...
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
 
#13

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

  Alt 30. Jul 2004, 16:54
ok:

Delphi-Quellcode:
{
  Fürht immer die funktion CheckPlay aus
  date    : 28.07.2004
  upDatet : 28.07.2004
}


procedure TSound.onE;
begin
  CheckPlay;
end;
Delphi-Quellcode:
{
  Schaut nach ob die musik zu ende ist oder nicht
  date    : 28.07.2004
  upDatet : 28.07.2004
}


procedure TSound.CheckPlay;
begin

  if (PlayMusikIndex > -1) and (isRandom = False) then begin

    if (Musik[PlayMusikIndex].Module <> NIL) and (FMUSIC_IsFinished(Musik[PlayMusikIndex].Module) = True) then
      randomMusik;

    if (Musik[PlayMusikIndex].Stream <> NIL) and ( FSOUND_IsPlaying(Musik[PlayMusikIndex].Channel) = False) then
      randomMusik;
  end;

end;
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
 
#14

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

  Alt 30. Jul 2004, 19:37
Delphi-Quellcode:
// etwas hübscher: ;)
procedure TSound.CheckPlay;
begin
  if (PlayMusikIndex > -1) and (isRandom = False) then
  begin
    if ((Musik[PlayMusikIndex].Module <> NIL) and (FMUSIC_IsFinished(Musik[PlayMusikIndex].Module) = True)) or
       ((Musik[PlayMusikIndex].Stream <> NIL) and (FSOUND_IsPlaying(Musik[PlayMusikIndex].Channel) = False)) then randomMusik;
  end;
end;
Hmmmm... Also wenn Musik, PlayMusikIndex, isRandom, FMUSIC_IsFinished, FSOUND_IsPlaying und randomMusik alles Felder und/oder Methoden von TSound sind, und randomMusik auch nur Zugriffe auf TSound-eigene Felder/Methoden macht, dann liegt das Problem wo anders - und ich wüsste auf Anhieb jetzt nicht wirklich wo .

Für den Fall, dass da z.B. eine DLL oder eine Kompo der VCL mit im Spiel ist (was ich hieraus nicht erkennen kann), dann wäre ein Synchronize hier und da angebracht.

Aber es ist doch lediglich eine Prüfung, ob noch etwas angespielt wird, oder? Wäre es da nicht einfacher einfach einen Timer zu nehmen, der alle paar Sekunden mal nachschaut?
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
 
#15

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

  Alt 30. Jul 2004, 20:13
das habe ich versucht mit einem Timer zu machen, doch leider ruckelt dann das Spiel, egal was ich für ein intervall nehme
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:55 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