<?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[Programm beendet im Release nicht]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab ein Programm geschrieben, welches im Debug-Modus kompiliert einwandfrei funktioniert und beendet. Im Release-Modus dagegegen beendet es nicht sondert das Fenster bleibt eingefroren.</p>
<p>Wie kann ich den Grund dafür finden?</p>
<p>Danke<br />
Jogi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/180000/programm-beendet-im-release-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 05:17:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/180000.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Apr 2007 12:59:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programm beendet im Release nicht on Fri, 27 Apr 2007 12:59:47 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab ein Programm geschrieben, welches im Debug-Modus kompiliert einwandfrei funktioniert und beendet. Im Release-Modus dagegegen beendet es nicht sondert das Fenster bleibt eingefroren.</p>
<p>Wie kann ich den Grund dafür finden?</p>
<p>Danke<br />
Jogi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274605</guid><dc:creator><![CDATA[Jogilein]]></dc:creator><pubDate>Fri, 27 Apr 2007 12:59:47 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Fri, 27 Apr 2007 16:48:02 GMT]]></title><description><![CDATA[<p>Debug Symbole mit erzeugen lassen und im Release Mode debuggen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1274749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1274749</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 27 Apr 2007 16:48:02 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Mon, 30 Apr 2007 07:48:36 GMT]]></title><description><![CDATA[<p>Danke für den Hinweis... Noch eine Frage: Wie mach ich das <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276064</guid><dc:creator><![CDATA[Jogilein]]></dc:creator><pubDate>Mon, 30 Apr 2007 07:48:36 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Mon, 30 Apr 2007 07:56:18 GMT]]></title><description><![CDATA[<p>Unter Projekt-&gt;Einstellungen wählst du die Release-Konfiguration aus (sollte eigentlich aktiv sein), schaltest auf den Tab &quot;C/C++&quot; und setzt das Häkchen vor &quot;Browse-Info generieren&quot; und wählst eine Option deiner Wahl bei &quot;Debug-Info:&quot;. Dann kannst du das Programm neu compilieren und ausführen lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276068</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Apr 2007 07:56:18 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Mon, 30 Apr 2007 08:27:47 GMT]]></title><description><![CDATA[<p>Ist das in Visual Studion 2005 auch so? Denn dort finde ich kein Häkchen... &quot;Informationen durchsuchen&quot; hab ich gefunden... aber das ist glaube ich nicht richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276095</guid><dc:creator><![CDATA[Jogilein]]></dc:creator><pubDate>Mon, 30 Apr 2007 08:27:47 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Mon, 30 Apr 2007 09:22:43 GMT]]></title><description><![CDATA[<p>Ja!<br />
Projekt Einstellungen dann C++ -&gt; Debug -&gt; Debug Information Format unter den Linker Einstellungen -&gt; Debugging -&gt; Gernerate Debug Info</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276134</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Mon, 30 Apr 2007 09:22:43 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Mon, 30 Apr 2007 10:12:18 GMT]]></title><description><![CDATA[<p>Danke jetzt hab ich es auch soweit das es im Release beendet... Aber der Fehler ist sehr eigenartig.</p>
<p>Ich hab zwei Threads laufen und in meinem Programm ruft der eine Thread bei dem anderen Objekt eine Methode auf, um dessen Thread zu beenden.</p>
<p>Vereinfacht sieht das so aus:</p>
<pre><code class="language-cpp">void CBerechnung::End() {

	if (m_bWorking) {
		m_bWorking = FALSE;

		// Auf das Ende der Thread-Methode warten
		while (m_pThread != NULL) { };
	}
}
</code></pre>
<p>Die eigentliche Berechnung läuft in einer Methode (in einem anderen Thread)</p>
<pre><code class="language-cpp">void CBerechnung::Berechnung() {
	m_bWorking = TRUE;
	while (m_bWorking) {
		// Hier wird nun berechnet
	}

	// Thread auf NULL setzen, m_bAutoDelete führt 
	// dazu das der Speicher freigegeben wird
	m_pThread = NULL;
}
</code></pre>
<p>Die Berechnung selber wird über eine Wrappermethode gestartet</p>
<pre><code class="language-cpp">void StartThread() {
	m_pThread = ::AfxBeginThread((AFX_THREADPROC) CBerechnung::StartWrapper, (LPVOID) this, 0, 0, 0, 0);
}

static int StartWrapper(LPVOID pWho) 
{ 
	return static_cast&lt;CBerechnung*&gt;(pWho)-&gt;Berechnung(); 
};
</code></pre>
<p>Mit dem oben angegeben funktioniert es nicht. Erst wenn ich es mit einem Sleep(0) in der while-Schleife schreibe wird der Thread beendet bzw. funktioniert wieder alles.</p>
<pre><code class="language-cpp">void CBerechnung::End() {

	if (m_bWorking) {
		m_bWorking = FALSE;

		// Auf das Ende der Thread-Methode warten
		while (m_pThread != NULL) { Sleep(0); };
	}
}
</code></pre>
<p>Kann mir das jemand erklären :)? Danke für jeden Versuch.</p>
<p>PS: Dazu hab ich direkt noch eine Frage. Muss ich die beiden Variablen m_bWorking und m_pThread absichern (also per Semaphoren) oder ist sichergestellt, dass das Setzen und Auslesen in einem Rutsch erfolgt, da es ja &quot;Standardtypen&quot; sind? Auch hierfür danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276181</guid><dc:creator><![CDATA[Jogilein]]></dc:creator><pubDate>Mon, 30 Apr 2007 10:12:18 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Mon, 30 Apr 2007 10:30:24 GMT]]></title><description><![CDATA[<p>Vermutlich hat der Compiler die (leere) Schleife einfach weg-optimiert <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>
<p>Aber auf das Thread-Ende solltest du lieber mit Systemmitteln warten (WaitForSingleObject()), das ist sicherer und eleganter - und du mußt die Variable nicht mehr selber anfassen. Ansonsten: Ja, m_bWorking solltest du absichern, m_pThread muß der Thread selber gar nicht anfassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276191</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 30 Apr 2007 10:30:24 GMT</pubDate></item><item><title><![CDATA[Reply to Programm beendet im Release nicht on Mon, 30 Apr 2007 11:11:15 GMT]]></title><description><![CDATA[<blockquote>
<p>Aber auf das Thread-Ende solltest du lieber mit Systemmitteln warten (WaitForSingleObject()), das ist sicherer und eleganter - und du mußt die Variable nicht mehr selber anfassen. Ansonsten: Ja, m_bWorking solltest du absichern, m_pThread muß der Thread selber gar nicht anfassen.</p>
</blockquote>
<p>Danke für den Hinweis... Hab ich direkt mal umgesetzt :)... aber hätte ich das direkt so gemacht hätte ich ja nie den Fehler im Release gehabt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> und nichts neues gelernt ;).</p>
<p>Nochmal danke für den Hinweis!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1276208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1276208</guid><dc:creator><![CDATA[Jogilein]]></dc:creator><pubDate>Mon, 30 Apr 2007 11:11:15 GMT</pubDate></item></channel></rss>