![]() |
#Thread starten
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 |
Re: #Thread starten
Hi,
zeig uns mal deinen Code, den du schon hast. Vielleicht finden wir den Fehler ;) |
Re: #Thread starten
Hi,
hast du mal etwas Code? Denn normalerweise wird, zumindest bei mir, generell das OnExecute-Event ausgelöst. |
Re: #Thread starten
Zitat:
![]() 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! |
Re: #Thread starten
Code kommt...
Ist soweit ich weiß alles standardmäßig programmiert...
Delphi-Quellcode:
[edit=alcaeus]Delphi-tags eingefuegt. In Zukunft bitte selbst machen. Mfg, alcaeus[/edit]
(* 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; |
Re: #Thread starten
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:
Gruß Data
var myThd : TReadCOM1Thread ;
begin myThd := TReadCOM1Thread.create; myThd.resume; // startet den Thread // .... end; |
Re: #Thread starten
Erzeugt er das Ding nicht mit .Create(false)? :gruebel:
|
Re: #Thread starten
Zitat:
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 :( |
Re: #Thread starten
Hey wow!
Getestet und für gut befunden. That works... Danke! Lars :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz