<?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[Erneuter Threadstart nach einmaliger beendung]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich habe ein kleines Problemchen.</p>
<p>Ich habe hier einen Thread vom Typ CWinThread als Zeiger, den ich mit AfxBeginThread, CREATE_SUSPEND und m_bAutoDelete = FALSE starte</p>
<p>so, wenn ich jetzt in eine Routine von mir reinlaufe, beende ich den vorerst</p>
<pre><code class="language-cpp">::WaitForSingleObject(m_pThread-&gt;m_hThread,INFINITE);
</code></pre>
<p>dann tippe ich nen paar sachen und danach möchte ich den Thread wieder starten</p>
<p>hab das dann auch wieder mit</p>
<pre><code class="language-cpp">m_pThread-&gt;ResumeThread();
</code></pre>
<p>versucht, aber irgendwie mach er mir das net</p>
<p>könnte mir von euch bitte jemand sagen, wie ich das implementieren kann?</p>
<p>Danke euch</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176772/erneuter-threadstart-nach-einmaliger-beendung</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 03:35:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176772.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 24 Mar 2007 19:12:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Sat, 24 Mar 2007 19:12:04 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich habe ein kleines Problemchen.</p>
<p>Ich habe hier einen Thread vom Typ CWinThread als Zeiger, den ich mit AfxBeginThread, CREATE_SUSPEND und m_bAutoDelete = FALSE starte</p>
<p>so, wenn ich jetzt in eine Routine von mir reinlaufe, beende ich den vorerst</p>
<pre><code class="language-cpp">::WaitForSingleObject(m_pThread-&gt;m_hThread,INFINITE);
</code></pre>
<p>dann tippe ich nen paar sachen und danach möchte ich den Thread wieder starten</p>
<p>hab das dann auch wieder mit</p>
<pre><code class="language-cpp">m_pThread-&gt;ResumeThread();
</code></pre>
<p>versucht, aber irgendwie mach er mir das net</p>
<p>könnte mir von euch bitte jemand sagen, wie ich das implementieren kann?</p>
<p>Danke euch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1251828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1251828</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Sat, 24 Mar 2007 19:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Sat, 24 Mar 2007 19:26:01 GMT]]></title><description><![CDATA[<p>Dann rufst Du halt nochmals AfxBeginThread auf.<br />
Wenn ein Thread *beendet* ist, dann ist er beendet (deshalb heist das wort ja so, oder)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1251833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1251833</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sat, 24 Mar 2007 19:26:01 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 06:59:07 GMT]]></title><description><![CDATA[<p>Dir ist hoffentlich klar, daß WaitForSingleObject() den externen Thread NICHT beendet (das legt höchstens deinen Thread auf Eis, bis der andere fertig ist). Wenn du den Thread &quot;nur&quot; anhalten willst, ist das jedenfalls nicht der richtige Ansatz - also: Was genau hast du vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252646</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 26 Mar 2007 06:59:07 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 10:54:47 GMT]]></title><description><![CDATA[<p>hi</p>
<p>also</p>
<p>der thread, von dem ich spreche, gibt nachrichten zurück, wenn ich an der seriellen schnittstelle daten empfange.</p>
<p>dann bin ich in den code der nachricht reingegangen, muss da den thread anhalten, xyz andere zeilen ausführen und danach den thread wieder starten</p>
<p>ich hatte da schonmal an sowas wie eine while schleife gedacht, aber das find ich irgendwie böse</p>
<p>wie meinst du das, dass WaitForSingleObject das nicht tut? also ich hab mal debuggt und er läuft erst weiter, wenn in dem thread AfxEndThread aufgerufen wird</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252815</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 26 Mar 2007 10:54:47 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 11:05:06 GMT]]></title><description><![CDATA[<p>WaitForSingleObject() macht genau das, was der Name andeutet - es wartet darauf, daß ein Sync-Objekt aktiv wird (und ein Thread wird &quot;aktiv&quot;, wenn er von sich aus fertig ist). (Randfrage: Wo genau hast du das eingebaut?)</p>
<p>Für dich ist womöglich ein Ansatz mit Events am günstigsten - der Thread wartet, bis das Hauptprogramm den Event setzt:</p>
<pre><code class="language-cpp">CEvent ev;

//Thread
while(!finished)
{
  Recieve(msg);
  switch(msg.code)
  {
  case DATA_MESSAGE:
    ::SendMessage(parent,WM_THDATA);
    WaitForSingleObject(ev,INFINIE);
    break;
  ...
  }
}

//Hauptprogramm
void OnThdata()//Verarbeitet WM_THDATA Nachrichten
{
  ...
  ev.PulseEvent();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1252825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252825</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 26 Mar 2007 11:05:06 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 11:15:02 GMT]]></title><description><![CDATA[<p>also:</p>
<p>in der OnInitDialog() starte ich den thread mit AutoDelete FALSE</p>
<p>dann habe ich in der gleichen klasse die methoden zur bearbeitung der nachrichten implementiert.</p>
<p>wenn jetzt nun nachricht xy gesendet wird von dem thread, geht er in die nachrichtenbehandlungsroutine rein, wo ich dann sofort einen schalter auf false setze, der im thread in einer while schleife abgefragt wird. sollte der auf false sein, geht er aus der schleife und führt mir den AfxEndThread aus</p>
<p>so, nach setzen des schalters hab ich dann meine WaitForSingleObject mit den nötigen übergabeparametern</p>
<p>wen ich haltepunkte setze, sehe ich, wie er aus der schleife gehtu nd AfxEndThread ausführt</p>
<p>danach gehts weiter bei mir im Code</p>
<p>und am ende der nachrichtenbehandlungsroutine setze ich den schalter wieder auf true und starte den thread wieder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252840</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 26 Mar 2007 11:15:02 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 11:21:36 GMT]]></title><description><![CDATA[<p>In dem Fall sorgt aber nicht das WaitForSingleObject() dafür, daß sich der Thread beendet, sondern das &quot;wo ich dann sofort einen schalter auf false setze&quot; <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="😉"
    /> Mit dem WaitFor.. wartest du nur so lange, bis der Thread diesen Schalter wirklich bemerkt hat.</p>
<p>btw, ist es wirklich unbedingt nötig, den Thread während der Nachrichtenverarbeitung komplett abzuschießen? Es dürfte wesentlich resourcenschonender sein, den Thread &quot;nur&quot; mit SuspendThread() einzuschläfern und später mit ResumeThread() wieder zu wecken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252845</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 26 Mar 2007 11:21:36 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 11:28:16 GMT]]></title><description><![CDATA[<p>achso</p>
<p>dann würde ich also SuspendThread() machen, damit der thread &quot;pausiert&quot; und wenn ich fertig bin ResumeThread() aufrufen um den weiter laufen zu lassen?</p>
<p>und dann kill ich praktisch nur beim beenden meiner anwendung den thread</p>
<p>aber da sollte ich doch warten bis das passiert ist, oder? weil sonst könnte ich probleme wegen dem delete bekommen, wenn das dingen noch net fertig is oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252851</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 26 Mar 2007 11:28:16 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 11:30:13 GMT]]></title><description><![CDATA[<p>MSS-Software schrieb:</p>
<blockquote>
<p>aber da sollte ich doch warten bis das passiert ist, oder? weil sonst könnte ich probleme wegen dem delete bekommen, wenn das dingen noch net fertig is oder?</p>
</blockquote>
<p>Kommt darauf an, was der Thread noch machen will - ihm den Speicher unter dem Hintern wegzuziehen ist keine besonders gute Idee, in dem Fall eindeutig &quot;JA&quot; <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252854</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 26 Mar 2007 11:30:13 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 11:38:17 GMT]]></title><description><![CDATA[<p>*gggg*</p>
<p>neeee, nicht wirklich <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>
<p>dann kommen da immer so kooooooomische fenster bit roten icons und so *ggg*</p>
<p>neee, alles klar</p>
<p>weiß ich bescheid</p>
<p>danke dir <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/1252858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252858</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 26 Mar 2007 11:38:17 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 13:42:47 GMT]]></title><description><![CDATA[<p>ehm, wenn ich jetzt</p>
<pre><code class="language-cpp">this-&gt;thread-&gt;SuspendThread();
</code></pre>
<p>aufrufe, stürzt mir das Programm ab.</p>
<p>Hab ich da was falsch gemacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252986</guid><dc:creator><![CDATA[MSS-Software]]></dc:creator><pubDate>Mon, 26 Mar 2007 13:42:47 GMT</pubDate></item><item><title><![CDATA[Reply to Erneuter Threadstart nach einmaliger beendung on Mon, 26 Mar 2007 14:50:00 GMT]]></title><description><![CDATA[<p>Suspend sollte man nie aufrufen (siehe mein Blog)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1253057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1253057</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 26 Mar 2007 14:50:00 GMT</pubDate></item></channel></rss>