<?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[Threadende erfassen]]></title><description><![CDATA[<p>Hi Leute</p>
<p>Ich habe eine auf Dialogfelder basierende MFC. Um die Oberfläche während dem Funktionsablauf ansprechen zu können habe ich einen Thread erstellt. Das Problem, das sich ergibt ist, dass ich jetzt den erhaltenen String nicht mehr ausgeben kann, da das aus dem Thread heraus nicht möglich ist (als das alles in einer Funktion war, die kein Thread darstellte, war das natürlich kein Problem).<br />
Wie kann ich das Threadende erfassen und dann direkt daran in einer Funktion meiner Klasse, in der auch das Ausgabefenster ist, weiterarbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/152938/threadende-erfassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 01:00:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/152938.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Jul 2006 10:22:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threadende erfassen on Tue, 11 Jul 2006 10:22:32 GMT]]></title><description><![CDATA[<p>Hi Leute</p>
<p>Ich habe eine auf Dialogfelder basierende MFC. Um die Oberfläche während dem Funktionsablauf ansprechen zu können habe ich einen Thread erstellt. Das Problem, das sich ergibt ist, dass ich jetzt den erhaltenen String nicht mehr ausgeben kann, da das aus dem Thread heraus nicht möglich ist (als das alles in einer Funktion war, die kein Thread darstellte, war das natürlich kein Problem).<br />
Wie kann ich das Threadende erfassen und dann direkt daran in einer Funktion meiner Klasse, in der auch das Ausgabefenster ist, weiterarbeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095672</guid><dc:creator><![CDATA[Stefan_Walter]]></dc:creator><pubDate>Tue, 11 Jul 2006 10:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to Threadende erfassen on Tue, 11 Jul 2006 10:34:02 GMT]]></title><description><![CDATA[<p>du machst folgendes:</p>
<p>- Membervariable vom Typ Control für dein Ausgabefeld anlegen<br />
- Dialogfensterzeiger (nach LPVOID gecastet) an den Thread übergeben<br />
- im Thread den LPVOID Zeiger wieder in einen Dialogfensterzeiger casten<br />
- dann im Thread:</p>
<pre><code class="language-cpp">UINT Dlg::ThreadFkt(LPVOID Zeiger)
{
    DLG* dialog = static_cast&lt;DLG*&gt;(Zeiger);   //LPVOID Zeiger in einen Dialogfenster Zeiger casten

    //diverser code...

    dialog-&gt;m_MembervarVomTypControl-&gt;SetWindowText(&quot;Hallo Thread- Welt&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1095681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095681</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Tue, 11 Jul 2006 10:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to Threadende erfassen on Tue, 11 Jul 2006 10:39:53 GMT]]></title><description><![CDATA[<p>Super, du meintest wohl:</p>
<pre><code class="language-cpp">dialog-&gt;m_MembervarVomTypControl.SetWindowText(&quot;Hallo Thread- Welt&quot;);
</code></pre>
<p>aber damit hats danna uch geklappt, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095684</guid><dc:creator><![CDATA[Stefan_Walter]]></dc:creator><pubDate>Tue, 11 Jul 2006 10:39:53 GMT</pubDate></item><item><title><![CDATA[Reply to Threadende erfassen on Tue, 11 Jul 2006 10:51:28 GMT]]></title><description><![CDATA[<p>CWnd Objekte sollten niemals über Thread Grenzen weitergegeben werden.</p>
<p>Zudem hat Deine Aktion ein massives Problem: Wenn der Main Thread gerade keine Nachrichtenschleife ausführt, dann wird Dein SetWindowText solange stehen bleiben bis die entsprechende Nachricht aus der Message Queue abgeholt wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095689</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 11 Jul 2006 10:51:28 GMT</pubDate></item><item><title><![CDATA[Reply to Threadende erfassen on Tue, 11 Jul 2006 14:00:32 GMT]]></title><description><![CDATA[<p>Stefan_Walter schrieb:</p>
<blockquote>
<p>Super, du meintest wohl:</p>
<pre><code class="language-cpp">dialog-&gt;m_MembervarVomTypControl.SetWindowText(&quot;Hallo Thread- Welt&quot;);
</code></pre>
<p>aber damit hats danna uch geklappt, danke!</p>
</blockquote>
<p>Ja genau so hab ich's gemeint.</p>
<p>Martin Richter schrieb:</p>
<blockquote>
<p>CWnd Objekte sollten niemals über Thread Grenzen weitergegeben werden.</p>
<p>Zudem hat Deine Aktion ein massives Problem: Wenn der Main Thread gerade keine Nachrichtenschleife ausführt, dann wird Dein SetWindowText solange stehen bleiben bis die entsprechende Nachricht aus der Message Queue abgeholt wurde.</p>
</blockquote>
<p>Wie könnte man es sonst noch machen? Ich hab das sogar in meinem Studium so gelehrt bekommen <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="😕"
    /> *iritiert ist*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095833</guid><dc:creator><![CDATA[Chris++ 0]]></dc:creator><pubDate>Tue, 11 Jul 2006 14:00:32 GMT</pubDate></item><item><title><![CDATA[Reply to Threadende erfassen on Tue, 11 Jul 2006 15:27:52 GMT]]></title><description><![CDATA[<p>Sende eine benutzerdefinierte Nachricht aus dem Thread an Deinen Dialog. Du kannst dann aus der Nachrichtenschleife Deines Dialogs direkt auf das Threadende reagieren.</p>
<p>Alternativ kannst Du am Ende Deines Threads ein Event (bei MFC CEvent) setzen, auf den Dein Dialog mit WaitForSingleObject wartet. Dann hättest Du aber den Teufel mit dem Beelzebub ausgetrieben, weil dann Dein Dialog wieder blockiert ist. <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/1095879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095879</guid><dc:creator><![CDATA[Cosmixx]]></dc:creator><pubDate>Tue, 11 Jul 2006 15:27:52 GMT</pubDate></item><item><title><![CDATA[Reply to Threadende erfassen on Tue, 11 Jul 2006 16:09:44 GMT]]></title><description><![CDATA[<p>Chris++ schrieb:</p>
<blockquote>
<p>Wie könnte man es sonst noch machen? Ich hab das sogar in meinem Studium so gelehrt bekommen <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="😕"
    /> *iritiert ist*</p>
</blockquote>
<p>1. Nur HWNDs übergeben.<br />
2. Datenaustausch mit anderen Fenstern nur vornehmen wenn unbedingt notwendig.<br />
Während des Threads oft unnötig.<br />
3. Habe ich das als Anmerkung geschrieben, weil die wenigsten begreifen, dass durch SendMessage autoamtisch eine Thread Synchronisation erzwungen wird und dies extrem leicht zu Deadlocks führen kann! Nur mal als Beispiel. MainThread macht WaitforSingleObject, Worker-Thread schickt Nachricht an den Main-Thread == Deadlock!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1095903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1095903</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 11 Jul 2006 16:09:44 GMT</pubDate></item></channel></rss>