<?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[External exception C0000008 bei CloseHandle]]></title><description><![CDATA[<pre><code class="language-cpp">for ( std::vector &lt; FuncThreads * &gt;::iterator It = ThreadPool.begin(); It &lt; ThreadPool.end(); It++ ){
    DWORD ExitCode;
    GetExitCodeThread((*It)-&gt;hThread,&amp;ExitCode);
    TerminateThread((*It)-&gt;hThread,ExitCode);
    CloseHandle((*It)-&gt;hThread);
    delete *It;
  }
</code></pre>
<p>Hi,</p>
<p>hab das problem das wenn ich den Handle des threads schließen will er mir ne exception wirft, aber ich weiß nicht so recht wieso o.o...</p>
<p>schließt terminate thread bereits den handle?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244190/external-exception-c0000008-bei-closehandle</link><generator>RSS for Node</generator><lastBuildDate>Fri, 03 Apr 2026 23:03:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244190.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Jun 2009 13:04:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to External exception C0000008 bei CloseHandle on Fri, 26 Jun 2009 13:04:45 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for ( std::vector &lt; FuncThreads * &gt;::iterator It = ThreadPool.begin(); It &lt; ThreadPool.end(); It++ ){
    DWORD ExitCode;
    GetExitCodeThread((*It)-&gt;hThread,&amp;ExitCode);
    TerminateThread((*It)-&gt;hThread,ExitCode);
    CloseHandle((*It)-&gt;hThread);
    delete *It;
  }
</code></pre>
<p>Hi,</p>
<p>hab das problem das wenn ich den Handle des threads schließen will er mir ne exception wirft, aber ich weiß nicht so recht wieso o.o...</p>
<p>schließt terminate thread bereits den handle?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733309</guid><dc:creator><![CDATA[Thready]]></dc:creator><pubDate>Fri, 26 Jun 2009 13:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to External exception C0000008 bei CloseHandle on Fri, 26 Jun 2009 13:14:45 GMT]]></title><description><![CDATA[<p>es waren korrupte thread handles <sup>.</sup> ^.- sry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733315</guid><dc:creator><![CDATA[Thready]]></dc:creator><pubDate>Fri, 26 Jun 2009 13:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to External exception C0000008 bei CloseHandle on Fri, 26 Jun 2009 13:43:54 GMT]]></title><description><![CDATA[<p>Unabhängig davon, daß Du den korrupten Handle gefixt hast:<br />
Ein kleiner Tipp, um solche Fehler frühzeitig erkennen zu können:</p>
<p>In Deinem obigen Beispiel sollst Du die Rückgabewerte von TerminateThread() und CloseHandle() auswerten!<br />
Entweder zur Laufzeit (dann wird aber der Nutzer damit konfrontiert und somit hilflos) oder besser in der Debug-Version mit VERIFY()-Statements absichern.</p>
<p>Stefan Kuhr erklärt sehr anschaulich anhand eines Fehler-Beispiels dieses Verhalten:<br />
<a href="http://mcblogs.craalse.de/sku?s=VERIFY&amp;sentence=AND" rel="nofollow">http://mcblogs.craalse.de/sku?s=VERIFY&amp;sentence=AND</a><br />
etwas weiter runter zum Abschnitt &quot;What's wrong with this code? Antwort&quot;</p>
<p>Gerade bei zwei oder mehreren Threads ist je nach Situation die Fehlersuche bei korrupten Handles sehr schwierig!</p>
<p>Just my 5 cents<br />
Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733342</guid><dc:creator><![CDATA[Mmacher]]></dc:creator><pubDate>Fri, 26 Jun 2009 13:43:54 GMT</pubDate></item><item><title><![CDATA[Reply to External exception C0000008 bei CloseHandle on Fri, 26 Jun 2009 16:24:43 GMT]]></title><description><![CDATA[<p>Und TerminateThread gehört sich sowieso nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733404</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Fri, 26 Jun 2009 16:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to External exception C0000008 bei CloseHandle on Fri, 26 Jun 2009 16:40:05 GMT]]></title><description><![CDATA[<p>Und wenn man einen Thread mit einem blocking call jeglicher Art beenden will? Dann hängt das Programm halt, oder wie?</p>
<p>(Btw. warum hat _endtrhead()/_endthreadex() keinen Parameter für ein Handle? Oder kann man einen mit _beginthreadex() erstellten Thread mit TerminateThread() terminieren?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733409</guid><dc:creator><![CDATA[Johnny2]]></dc:creator><pubDate>Fri, 26 Jun 2009 16:40:05 GMT</pubDate></item><item><title><![CDATA[Reply to External exception C0000008 bei CloseHandle on Fri, 26 Jun 2009 16:57:36 GMT]]></title><description><![CDATA[<p>Johnny2 schrieb:</p>
<blockquote>
<p>Und wenn man einen Thread mit einem blocking call jeglicher Art beenden will? Dann hängt das Programm halt, oder wie?</p>
<p>(Btw. warum hat _endtrhead()/_endthreadex() keinen Parameter für ein Handle? Oder kann man einen mit _beginthreadex() erstellten Thread mit TerminateThread() terminieren?)</p>
</blockquote>
<p>Du weisst warscheinlich nicht wo _endtrhead()/_endthreadex() korrrekter Weise im Programm steht, hab ich recht? Diese beiden Funktionen stehen am Ende des durch _beginthreadex() erstellten Threads und nicht irgendwo aussen vor wie du vermutlich vermutet hast. Warum man die nun ans Ende der Funktion schreibt, weiss ich auch nicht. Die Frage kann dir aber sicher einer der Fachleute hier erläutern.</p>
<p>Was verstehest du unter <em>blocking call jeglicher Art</em>, eine sauber programmierte Anwendung hängt nicht. Wenn du den Thread von aussen zu Beenden wünschst, dann bau in den Threat irgendeine Abfrage ein, die ein Eingreifen ermöglicht, und beende dann den Thread korrekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733415</guid><dc:creator><![CDATA[-----------]]></dc:creator><pubDate>Fri, 26 Jun 2009 16:57:36 GMT</pubDate></item><item><title><![CDATA[Reply to External exception C0000008 bei CloseHandle on Fri, 26 Jun 2009 17:18:53 GMT]]></title><description><![CDATA[<p>Und wenn im Thread auf eine named pipe gewartet wird? Und was ist mit einem blocking recv() call?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1733421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1733421</guid><dc:creator><![CDATA[Johnny2]]></dc:creator><pubDate>Fri, 26 Jun 2009 17:18:53 GMT</pubDate></item></channel></rss>