<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Thread beendet sofort in BCB2006]]></title><description><![CDATA[<p>Hallo,<br />
ich benutze z.Zt. den Borland Developer 2006 und wollte einen Thread in meinem Prog. starten.<br />
Das Starten und dessen Aufgabe funktioniert auch, aber nach der Aufgabe wird der Thread sofort wieder beendet?<br />
Hier mein Code des Threads:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

__fastcall TmyThread::TmyThread(bool CreateSuspended)
	: TThread(CreateSuspended)
{
FreeOnTerminate = true;
Priority = tpNormal;
}
//---------------------------------------------------------------------------
void TmyThread::SetName()
{
	THREADNAME_INFO info;
	info.dwType = 0x1000;
	info.szName = &quot;ZeitThread&quot;;
	info.dwThreadID = -1;
	info.dwFlags = 0;

	__try
	{
		RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD),(DWORD*)&amp;info );
	}
	__except (EXCEPTION_CONTINUE_EXECUTION)
	{
	}
}
//---------------------------------------------------------------------------
void __fastcall TmyThread::Execute()
{
	SetName();
	//---- Thread-Code hier platzieren ----
	Synchronize((TThreadMethod)&amp;Zeitanzeige);
}
//---------------------------------------------------------------------------
void __fastcall TmyThread::Zeitanzeige()
{
TDateTime Zeit = Now();
FrmAuswahl-&gt;StatusBar1-&gt;Panels-&gt;Items[2]-&gt;Text = (String)Zeit;
}
</code></pre>
<p>Und so rufe ich Ihn in meiner Anwendung auf:</p>
<pre><code class="language-cpp">void __fastcall TFrmAuswahl::Button1Click(TObject *Sender)
{
new TmyThread(false);
}
</code></pre>
<p>Das mit</p>
<pre><code class="language-cpp">new TmyThread(false);
</code></pre>
<p>ist ja nicht ganz richtig. Eigentlich sollte es ja heißen</p>
<pre><code class="language-cpp">neuerThread = new TmyThread(false);
</code></pre>
<p>aber das geht nicht. Er meldet &quot;Bezeichner 'neuerThread' nicht bekannt.</p>
<p>Was mache ich da falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/142012/thread-beendet-sofort-in-bcb2006</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 00:32:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/142012.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Mar 2006 11:37:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 11:37:45 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich benutze z.Zt. den Borland Developer 2006 und wollte einen Thread in meinem Prog. starten.<br />
Das Starten und dessen Aufgabe funktioniert auch, aber nach der Aufgabe wird der Thread sofort wieder beendet?<br />
Hier mein Code des Threads:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

__fastcall TmyThread::TmyThread(bool CreateSuspended)
	: TThread(CreateSuspended)
{
FreeOnTerminate = true;
Priority = tpNormal;
}
//---------------------------------------------------------------------------
void TmyThread::SetName()
{
	THREADNAME_INFO info;
	info.dwType = 0x1000;
	info.szName = &quot;ZeitThread&quot;;
	info.dwThreadID = -1;
	info.dwFlags = 0;

	__try
	{
		RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD),(DWORD*)&amp;info );
	}
	__except (EXCEPTION_CONTINUE_EXECUTION)
	{
	}
}
//---------------------------------------------------------------------------
void __fastcall TmyThread::Execute()
{
	SetName();
	//---- Thread-Code hier platzieren ----
	Synchronize((TThreadMethod)&amp;Zeitanzeige);
}
//---------------------------------------------------------------------------
void __fastcall TmyThread::Zeitanzeige()
{
TDateTime Zeit = Now();
FrmAuswahl-&gt;StatusBar1-&gt;Panels-&gt;Items[2]-&gt;Text = (String)Zeit;
}
</code></pre>
<p>Und so rufe ich Ihn in meiner Anwendung auf:</p>
<pre><code class="language-cpp">void __fastcall TFrmAuswahl::Button1Click(TObject *Sender)
{
new TmyThread(false);
}
</code></pre>
<p>Das mit</p>
<pre><code class="language-cpp">new TmyThread(false);
</code></pre>
<p>ist ja nicht ganz richtig. Eigentlich sollte es ja heißen</p>
<pre><code class="language-cpp">neuerThread = new TmyThread(false);
</code></pre>
<p>aber das geht nicht. Er meldet &quot;Bezeichner 'neuerThread' nicht bekannt.</p>
<p>Was mache ich da falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1024700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1024700</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Mon, 27 Mar 2006 11:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 11:50:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Wenn schon, dann so</p>
<pre><code class="language-cpp">TmyThread* neuerThread = new TmyThread(false);
</code></pre>
<p>So würdest du eine lokale Variable deines Threads erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1024712</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1024712</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 27 Mar 2006 11:50:01 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 15:41:39 GMT]]></title><description><![CDATA[<p>Hi,<br />
habe den Fehler behoben. Aber der Thread stoppt immer noch direkt nach einmaliger Ausführung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1024898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1024898</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Mon, 27 Mar 2006 15:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 15:53:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wie wäre es denn mit einer Schleife:</p>
<pre><code class="language-cpp">while(!Terminated)
{
  Synchronize((TThreadMethod)&amp;Zeitanzeige);
}
</code></pre>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1024910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1024910</guid><dc:creator><![CDATA[Rostfrei**]]></dc:creator><pubDate>Mon, 27 Mar 2006 15:53:17 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 17:59:10 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Das was ich über Threads gelesen habe, sagt aus, das ein Thread solange läuft bis er (vom User) beendet wird.<br />
Also ist doch so eine Schleife nicht gerade die beste Lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1024998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1024998</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Mon, 27 Mar 2006 17:59:10 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 21:06:49 GMT]]></title><description><![CDATA[<p>Wieso denn nicht?</p>
<p>Wenn der Thread gestartet wird, läuft er komplett durch und ist danach beendet.</p>
<p>Du kannst den Thread natürlich z.B. mit einem Timer mit Resume wieder starten, oder Du lässt ihn solange arbeiten, bis er (durch den Benutzer) beendet wird und Terminated auf true gesetzt wird.</p>
<p>In die Schleife muss sinnvollerweise noch eine Sleepfunktion oder ähnliches, da Du sonst Deine Rechnerperformance im Keller besuchen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025144</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025144</guid><dc:creator><![CDATA[Rostfrei**]]></dc:creator><pubDate>Mon, 27 Mar 2006 21:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 22:06:30 GMT]]></title><description><![CDATA[<p>Ich habe jetzt mal meinen Thread in eine Timer-Kompo. gepackt. Folgendes Problem ist aufgetreten: Wenn ich den Thread mit Resume im Timer wieder Starten will, bekomme ich die Meldung &quot;Thread-Fehler: Das Handle ist ungültig(6)&quot;.<br />
Ist ja auch klar. Mein Thread wurde nach dem beenden ja wieder gelöscht...</p>
<p>Also habe ich versucht, den Thread in der Timer-Kompo. mit</p>
<pre><code class="language-cpp">ZeitThread = new TmyThread(false);
</code></pre>
<p>immer wieder neu zu erstellen. Das klappt auch (fast).</p>
<p>Jetzt tritt nämlich folgender Effekt auf, den man mit der Verwendung eines Threads natürlich verhindern will: Die Zeitanzeige gerät ins Stocken bei einer weiteren Aufgabe meines Programms <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /><br />
Das möchte ich doch mit einem Thread vermeiden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025174</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Mon, 27 Mar 2006 22:06:30 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Mon, 27 Mar 2006 22:26:16 GMT]]></title><description><![CDATA[<p>Natürlich wird der Thread nach dem Beenden freigegeben. Du hast schließlich</p>
<pre><code class="language-cpp">FreeOnTerminate = true;
</code></pre>
<p>geschrieben.</p>
<p>Wenn der Thread nur die Zeit mit den Sekunden anzeigen soll, dann schreibe folgendes in OnExecute:</p>
<pre><code class="language-cpp">void __fastcall TmyThread::Execute()
{
    SetName();
    //---- Thread-Code hier platzieren ----
    while(!Terminated)
      {
        Synchronize((TThreadMethod)&amp;Zeitanzeige);
        Sleep(1000); // Thread wartet eine Sekunde
      }
}
</code></pre>
<p>Lies Dir am besten mal in der BCB Hilfe den Threadabschnitt durch. Besonders die Initalisierung mit Bool und die Eigenschaften</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025180</guid><dc:creator><![CDATA[Rostfrei**]]></dc:creator><pubDate>Mon, 27 Mar 2006 22:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to Thread beendet sofort in BCB2006 on Tue, 28 Mar 2006 03:09:42 GMT]]></title><description><![CDATA[<p>Nach langem suchen und lesen der BCB-Hilfe habe ich es dann auch so gemacht. Denn es steht '...ist der Codeblock in ::Execute() abgearbeitet, wird der Thread beendet...'.</p>
<p>Mein Code sieht jetzt so aus :</p>
<pre><code class="language-cpp">void __fastcall TmyThread::Execute()
{
    SetName();
    //---- Thread-Code hier platzieren ----
    while(!Terminated)
      {
        Synchronize((TThreadMethod)&amp;Zeitanzeige);
        Zeitanzeige();
      }
}
</code></pre>
<p>Nun wird der Thread beim Programmstart gestartet, die Zeit wird ständig aktuell angezeigt und beim Beenden des Programms wird der Thread mit</p>
<pre><code class="language-cpp">TmyThread-&gt;Terminate();
</code></pre>
<p>beendet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Vielen Dank!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1025209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1025209</guid><dc:creator><![CDATA[torsten_156]]></dc:creator><pubDate>Tue, 28 Mar 2006 03:09:42 GMT</pubDate></item></channel></rss>