<?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[GetExitCodeThread(*,*)]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich habe hier ein Problem mit meinem Thread. Starten und laufen und so tut er wunderbar, nur wenn z.B. ein Button gedrückt wird, soll der Thread sich beenden und das Dialogfenster schließen.</p>
<p>Hab ich folgendermaßen implementiert:</p>
<p>//Header</p>
<pre><code class="language-cpp">void Starten();
static UINT AuswertungStarten (LPVOID pParam);
</code></pre>
<p>//CPP</p>
<pre><code class="language-cpp">//Starten()

//hier kommt ne ganze Reihe von Code und in der Schleife ist folgende bedingung:

if ( abbruch ) //wird mit true gefüllt wenn button gedrückt wird
{
     AfxEndThread(1,TRUE);
}
</code></pre>
<pre><code class="language-cpp">//AuswertungStarten()
UINT CClassDlg::AuswertungStarten(LPVOID pParam)
{
	CClassDlg* pDlg = (CClassDlgg*) pParam;
	pDlg-&gt;Starten();
	return 0; 
}
</code></pre>
<pre><code class="language-cpp">//Cancel Button

this-&gt;abbruch = TRUE;
DWORD ExitCode;
GetExitCodeThread(AuswertungStarten,&amp;ExitCode);
if ( ExitCode == 1 )
    OnCancel();
</code></pre>
<p>Starten tue ich den Thread wie folgt:</p>
<pre><code class="language-cpp">AfxBeginThread(AuswertungStarten,this);
</code></pre>
<p>Komischerweise steht direkt vor dem starten des Threads, nach starten des Threads und nach beedigung des Threads immer der gleiche Wert in ExitCode.</p>
<p>Ich hab keine Ahnung woran das liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152919/getexitcodethread</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 07:34:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152919.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Jul 2006 08:40:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 08:42:22 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich habe hier ein Problem mit meinem Thread. Starten und laufen und so tut er wunderbar, nur wenn z.B. ein Button gedrückt wird, soll der Thread sich beenden und das Dialogfenster schließen.</p>
<p>Hab ich folgendermaßen implementiert:</p>
<p>//Header</p>
<pre><code class="language-cpp">void Starten();
static UINT AuswertungStarten (LPVOID pParam);
</code></pre>
<p>//CPP</p>
<pre><code class="language-cpp">//Starten()

//hier kommt ne ganze Reihe von Code und in der Schleife ist folgende bedingung:

if ( abbruch ) //wird mit true gefüllt wenn button gedrückt wird
{
     AfxEndThread(1,TRUE);
}
</code></pre>
<pre><code class="language-cpp">//AuswertungStarten()
UINT CClassDlg::AuswertungStarten(LPVOID pParam)
{
	CClassDlg* pDlg = (CClassDlgg*) pParam;
	pDlg-&gt;Starten();
	return 0; 
}
</code></pre>
<pre><code class="language-cpp">//Cancel Button

this-&gt;abbruch = TRUE;
DWORD ExitCode;
GetExitCodeThread(AuswertungStarten,&amp;ExitCode);
if ( ExitCode == 1 )
    OnCancel();
</code></pre>
<p>Starten tue ich den Thread wie folgt:</p>
<pre><code class="language-cpp">AfxBeginThread(AuswertungStarten,this);
</code></pre>
<p>Komischerweise steht direkt vor dem starten des Threads, nach starten des Threads und nach beedigung des Threads immer der gleiche Wert in ExitCode.</p>
<p>Ich hab keine Ahnung woran das liegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095594</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Tue, 11 Jul 2006 08:42:22 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 08:48:30 GMT]]></title><description><![CDATA[<p>Naja, wenn du denn exitcode holst ist dein thread ja noch nicht beendet, auf 'abbruch' wird doch erst später reagiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095601</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Tue, 11 Jul 2006 08:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 08:51:13 GMT]]></title><description><![CDATA[<p>ja gut ok</p>
<p>aber dann müsste er zugehen, wenn ich das zweite mal druf klicke</p>
<p>das tut er ja auch net</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095603</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Tue, 11 Jul 2006 08:51:13 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:18:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">CWinThread* m_pThread = AfxBeginThread(...);
</code></pre>
<p>1. Speichere irgendwo den gewonnen Zeiger von AfxBeginThread, wohl am besten in eine Membervariable.</p>
<pre><code class="language-cpp">//Cancel Button

this-&gt;abbruch = TRUE;
while(WaitForSingleObject(m_pThread-&gt;m_hThread, INFINITE) != WAIT_OBJECT_0);
DWORD ExitCode;
GetExitCodeThread(m_pThread-&gt;m_hThread,&amp;ExitCode);
if(ExitCode == 1)
    OnCancel();
</code></pre>
<p>2. Warte mit WaitForSingleObject und dem Handle des Threads darauf, bis der Thread auch beendet wurde.</p>
<p>3. Wie machst du das eigentlich mit dem abbruch? Im Cancel Button Code hast du ein this-&gt;abbruch aber im Thread nur ein abbruch. Ich hoffe du weisst, was du da tust *g*</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095607</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:10:14 GMT]]></title><description><![CDATA[<p>ja, abbruch is ne member</p>
<p>hab nur das this vergessen *zwinka*</p>
<p>aber das hört sich gut an</p>
<p>ich proebiere das gleich aus</p>
<p>danke schonmal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095616</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:10:14 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:23:02 GMT]]></title><description><![CDATA[<p>...dann must du aber auch innerhalb deiner Threadfunktion auf abbruch reagieren und nicht im dialog.</p>
<p>Edit: .. machst Du schon <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> ...war gestern bei Robbie <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095625</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095625</guid><dc:creator><![CDATA[connan]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:23:02 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:22:28 GMT]]></title><description><![CDATA[<p>Gerade noch einen Fehler entdeckt. Mich hat das GetExitCodeThread schon vorhin gestört, dass du dem einen Zeiger auf deine Funktion übergibst, doch ich habe damit noch nie gearbeitet und deshalb nicht weiterüberlegt. Nun habe ich allerdings endlich in der MSDN nachgeschaut und siehe da ... GetExitCodeThread verlangt ein Handle auf deinen Thread und einen Zeiger auf eine DWORD Variable. Ich habe es oben editiert und führe es hier nochmals auf:</p>
<pre><code class="language-cpp">DWORD dwExitCode = 0;
GetExitCodeThread(m_pThread-&gt;m_hThread, &amp;dwExitCode);
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095626</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:22:58 GMT]]></title><description><![CDATA[<p>jepp, das tu ich ja auch</p>
<p>dann beende ich den thread</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095627</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:25:19 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Gerade noch einen Fehler entdeckt. Mich hat das GetExitCodeThread schon vorhin gestört, dass du dem einen Zeiger auf deine Funktion übergibst, doch ich habe damit noch nie gearbeitet und deshalb nicht weiterüberlegt. Nun habe ich allerdings endlich in der MSDN nachgeschaut und siehe da ... GetExitCodeThread verlangt ein Handle auf deinen Thread und einen Zeiger auf eine DWORD Variable. Ich habe es oben editiert und führe es hier nochmals auf:</p>
<pre><code class="language-cpp">DWORD dwExitCode = 0;
GetExitCodeThread(m_pThread-&gt;m_hThread, &amp;dwExitCode);
</code></pre>
<p>Grüssli</p>
</blockquote>
<p>jo sicher; stand da ja auch; aber da ich den zeiger bis eben noch nicht zugewiesen hatte, habe ich halt die funktion übergeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095629</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:25:19 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:34:02 GMT]]></title><description><![CDATA[<p>hey, es funktioniert *ggg*</p>
<p>dankeschön <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095636</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095636</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:39:16 GMT]]></title><description><![CDATA[<p>Boch mal was grundsätzliches, wenn man CWinThread* m_pThread = AfxBeginThread(...); ausführt, dann zerstört sich das CWinThread Objekt sofort wenn der Thread terminiert. Wenn man also noch was kontrollieren will, oder gar auf den Thread warten will, dann <strong>muss</strong> man m_bAutoDelete auf FALSE setzen und das Objekt selber per delete entsorgen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095640</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 11 Jul 2006 09:50:17 GMT]]></title><description><![CDATA[<p>Ups ... da hat er sogar recht.<br />
Ehm ... aber wenn man m_bAutoDelete verändert, sollte man dann den Thread nicht mit CREATE_SUSPENDED starten? Bzw. als Codeausschnitt:</p>
<pre><code class="language-cpp">m_pThread = AfxBeginThread(AuswertungStarten, (LPVOID)this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
if(m_pThread != NULl)
{
    m_pThread-&gt;m_bAutoDelete = FALSE;
    m_pThread-&gt;ResumeThread();
}
else
{
    // Thread konnte nicht gestartet werden.
}
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095653</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 11 Jul 2006 09:50:17 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 22 Aug 2006 07:51:07 GMT]]></title><description><![CDATA[<p>alles klar</p>
<p>hab ich jetzt alles auch so gemacht</p>
<p>nur: wie lösche ich den thread? einfach mit Delete(); ?</p>
<p>Edit: Neee, er wirft mir zwar keinen Fehler aus, aber dafür Memory Leaks *wein*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1121971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1121971</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Tue, 22 Aug 2006 07:51:07 GMT</pubDate></item><item><title><![CDATA[Reply to GetExitCodeThread(*,*) on Tue, 22 Aug 2006 15:31:36 GMT]]></title><description><![CDATA[<p>Nicht Delete() sondern delete!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1122242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1122242</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 22 Aug 2006 15:31:36 GMT</pubDate></item></channel></rss>