AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

#Thread starten

Ein Thema von www.Lars · begonnen am 11. Apr 2006 · letzter Beitrag vom 11. Apr 2006
Antwort Antwort
www.Lars

Registriert seit: 7. Apr 2006
Ort: München
4 Beiträge
 
Delphi 7 Professional
 
#1

#Thread starten

  Alt 11. Apr 2006, 17:32
Hei!

Ich starten in meinem Programm einen Thread, der aber aus welchen Gründen auch immer nicht losläuft. Irgendwo habe ich mal gelesen, dass es noch andere Möglichkeiten gibt, einen Thread zu starten außer mit der Thread.Create-Methode.

Kann mir jemand helfen?

Viele Grüße!

Lars
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: #Thread starten

  Alt 11. Apr 2006, 17:34
Hi,

zeig uns mal deinen Code, den du schon hast. Vielleicht finden wir den Fehler
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: #Thread starten

  Alt 11. Apr 2006, 17:35
Hi,

hast du mal etwas Code? Denn normalerweise wird, zumindest bei mir, generell das OnExecute-Event ausgelöst.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: #Thread starten

  Alt 11. Apr 2006, 17:38
Zitat von www.Lars:
Irgendwo habe ich mal gelesen, dass es noch andere Möglichkeiten gibt, einen Thread zu starten außer mit der Thread.Create-Methode
Ja, es gibt noch weitere Moeglichkeiten, eine davon ist MSDN-Library durchsuchenCreateThread. Mit dieser kannst du allerdings nicht die TThread-Klasse aus der VCL verwenden, sondern musst eine Funktion schreiben, welche in einem neuen Thread ausgefuehrt wird.
Aber ich wuerde vorschlagen, dass du versuchst, die derzeitige Methode zum Laufen bringen, ich bin nicht gerade ein Fan von "Klappt nich, ich nehm was anderes"

greetz
Mike

Roter Kasten, ergeben sie sich! Wir haben den Thread umstellt, kommen sie mit erhobenen Ecken raus!
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
www.Lars

Registriert seit: 7. Apr 2006
Ort: München
4 Beiträge
 
Delphi 7 Professional
 
#5

Re: #Thread starten

  Alt 11. Apr 2006, 17:47
Code kommt...

Ist soweit ich weiß alles standardmäßig programmiert...

Delphi-Quellcode:
  (* Der Thread zur Durchführung der Messung *)
  TReadCOM1Thread = class(TThread)
  protected
    procedure execute; override;
  private
    function initAnalyzer: integer;
    function eraseBufferIn: integer;
    procedure convertValue (answerStr: string; var valueReal: Real; var valueStr: string);
  public
    constructor create;
    function startRemote: integer;
    function stopRemote: integer;
  end;


  (* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)
  (* Der Konstruktor für den Thread                                      *)
  (* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)
  constructor TReadCOM1Thread.create;
  begin
    inherited Create(False);
    FreeOnTerminate:=True;
  end;



  (* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)
  (* Diese Funktion startet den Thread für die Messung                   *)
  (* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)
  function TCOM_Remote.startMeasurement: Integer;
  begin
    Form1.Label11.Caption := '0.000 nT ';
    Form1.Label12.Caption := 'Keine Fehler.';
    measure := TReadCOM1Thread.create; // Thread (Messung) starten
    result := 0
  end;


  (* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)
  (*                                                                     *)
  (* Thread ausführen                                                    *)
  (*                                                                     *)
  (* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *)
  procedure TReadCOM1Thread.Execute;

  var
    mSec: integer; // msec des Zeitformats
    timeStamp1: TDateTime; // Zeitstempel
    ...

  begin
    setLength (tempFile, 2); // Zunächst 2 Files zur Datenspeicherung
    timeStamp2 := now; // Zeitstempel initialisieren
    ...
  end;
[edit=alcaeus]Delphi-tags eingefuegt. In Zukunft bitte selbst machen. Mfg, alcaeus[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: #Thread starten

  Alt 11. Apr 2006, 17:51
Hi,

meiner Meinung nach fehlt das Resume,
Du erzeugst den Thread ja suspended(s. in Deinem Create)
Deshalb musst Du wenn Du Deinen Thread erzeugt hast :

Delphi-Quellcode:
var myThd : TReadCOM1Thread ;
begin
  myThd := TReadCOM1Thread.create;
  myThd.resume; // startet den Thread
  // ....
end;
Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: #Thread starten

  Alt 11. Apr 2006, 17:55
Erzeugt er das Ding nicht mit .Create(false)?
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#8

Re: #Thread starten

  Alt 11. Apr 2006, 17:55
Zitat von DataCool:
Hi,

meiner Meinung nach fehlt das Resume,
Du erzeugst den Thread ja suspended(s. in Deinem Create)
Deshalb musst Du wenn Du Deinen Thread erzeugt hast :

Delphi-Quellcode:
var myThd : TReadCOM1Thread ;
begin
  myThd := TReadCOM1Thread.create;
  myThd.resume; // startet den Thread
  // ....
end;
Das hatte ich am Anfang auch im Kopf, aber:
In der Delphi-Hilfe steht
Delphi syntax:

constructor Create(CreateSuspended: Boolean);

Description

Call Create to create a thread in an application. If CreateSuspended is False, Execute is called immediately. If CreateSuspended is True, Execute won’t be called until after Resume is called.

Das Raetsel bleibt also weiter offen, ich hab (auf den ersten Blick) keinen Code gesehn, der irgendwie gegen ein Ausfuehren sprechen wuerde

greetz
Mike

[Edit] Heut bin ich echt langsam, und dann noch dazu hat sich der rote Kasten freigenommen
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
www.Lars

Registriert seit: 7. Apr 2006
Ort: München
4 Beiträge
 
Delphi 7 Professional
 
#9

Re: #Thread starten

  Alt 11. Apr 2006, 17:59
Hey wow!

Getestet und für gut befunden. That works...

Danke!

Lars
  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 06:00 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