<?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[CDialog von Thread beenden lassen]]></title><description><![CDATA[<p>hmm angenommen ich habe einen Dialog gestartet bei dem sofort ein Thread gestartet wird der immer wieder das eine oder andere tut...</p>
<pre><code class="language-cpp">DWORD ValidierungDlg::LivepicsThread(LPVOID lparam){

	ValidierungDlg *dp = ((ValidierungDlg*)lparam);

	while(!dp-&gt;endflag){
		while(dp-&gt;livepicsFlag)
			dp-&gt;PaintPics();
		if(dp-&gt;taskflag==2)//Validieren
			dp-&gt;Validieren();
		if(dp-&gt;taskflag==3)//Parameter laden
			dp-&gt;ParameterWiederherstellen();
		if(dp-&gt;taskflag==4)//Parameter speichern
			dp-&gt;ParameterSpeichern();
		dp-&gt;livepicsFlag=1;
	}
//	dp-&gt;endflag=0;
	dp-&gt;EndDialog(0);

	return 0;
}
</code></pre>
<p>so und nun zu meinem problem... eigentlich wollte ich wenn der EndeButton gedrückt wird das so abläuft das das das endflag gesetzt wird und ich dann solange warte bis der Thread durch ist um danach den Dialog zu killen</p>
<p>also in der endebuttonmehtode solls so aussehen</p>
<pre><code class="language-cpp">taskflag=-1;
	endflag=1;
	livepicsFlag=0;

         //im moment sind diese beiden zeilen auskommentiert weil ich enddialog im thread aufrufe was aber irgendwie ziemlich unschön ist
	while(!endflag) Sleep(100);
	EndDialog(0);
</code></pre>
<p>wenn ichs allerdings mit der whileschleife mache hängt der in der buttonmehtode fest und der thread bekommt keine rechenzeit mehr... endlosschleife und verloren... was muss ich machen damit der threadzuende durchläuft?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/70356/cdialog-von-thread-beenden-lassen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Apr 2026 03:43:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/70356.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Apr 2004 20:49:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Tue, 06 Apr 2004 20:49:48 GMT]]></title><description><![CDATA[<p>hmm angenommen ich habe einen Dialog gestartet bei dem sofort ein Thread gestartet wird der immer wieder das eine oder andere tut...</p>
<pre><code class="language-cpp">DWORD ValidierungDlg::LivepicsThread(LPVOID lparam){

	ValidierungDlg *dp = ((ValidierungDlg*)lparam);

	while(!dp-&gt;endflag){
		while(dp-&gt;livepicsFlag)
			dp-&gt;PaintPics();
		if(dp-&gt;taskflag==2)//Validieren
			dp-&gt;Validieren();
		if(dp-&gt;taskflag==3)//Parameter laden
			dp-&gt;ParameterWiederherstellen();
		if(dp-&gt;taskflag==4)//Parameter speichern
			dp-&gt;ParameterSpeichern();
		dp-&gt;livepicsFlag=1;
	}
//	dp-&gt;endflag=0;
	dp-&gt;EndDialog(0);

	return 0;
}
</code></pre>
<p>so und nun zu meinem problem... eigentlich wollte ich wenn der EndeButton gedrückt wird das so abläuft das das das endflag gesetzt wird und ich dann solange warte bis der Thread durch ist um danach den Dialog zu killen</p>
<p>also in der endebuttonmehtode solls so aussehen</p>
<pre><code class="language-cpp">taskflag=-1;
	endflag=1;
	livepicsFlag=0;

         //im moment sind diese beiden zeilen auskommentiert weil ich enddialog im thread aufrufe was aber irgendwie ziemlich unschön ist
	while(!endflag) Sleep(100);
	EndDialog(0);
</code></pre>
<p>wenn ichs allerdings mit der whileschleife mache hängt der in der buttonmehtode fest und der thread bekommt keine rechenzeit mehr... endlosschleife und verloren... was muss ich machen damit der threadzuende durchläuft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/496528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/496528</guid><dc:creator><![CDATA[Windalf]]></dc:creator><pubDate>Tue, 06 Apr 2004 20:49:48 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Tue, 06 Apr 2004 23:34:38 GMT]]></title><description><![CDATA[<p>hmm hat keiner ne Idee oder hab ich mein Problem zu schelcht beschrieben?<br />
Wenn irgendwas unklar ist fragt bitte nach</p>
]]></description><link>https://www.c-plusplus.net/forum/post/496575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/496575</guid><dc:creator><![CDATA[Windalf]]></dc:creator><pubDate>Tue, 06 Apr 2004 23:34:38 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Wed, 07 Apr 2004 04:39:31 GMT]]></title><description><![CDATA[<p>Ich mache das immer so wie in der FAQ beschrieben. Eine von CWinThread abgeleitete Klasse. Den Threadhamdle überprüfe ich im Dialog ob der Thread noch läuft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/496596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/496596</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 07 Apr 2004 04:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Wed, 07 Apr 2004 06:50:11 GMT]]></title><description><![CDATA[<p>ob ich das bei mir per Threadhandle mache oder mit einem flag das von dem Thread gesetzt wird kommt bei mir aufs gleiche...<br />
Hab beides mit dem selben nichterfolg probiert... Problem ist halt wie bring ich ihn dazu das der Thread weiterläuft wenn ich in der Buttonmehtode bin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/496615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/496615</guid><dc:creator><![CDATA[Windalf]]></dc:creator><pubDate>Wed, 07 Apr 2004 06:50:11 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Wed, 07 Apr 2004 14:56:36 GMT]]></title><description><![CDATA[<p>Please HEEEEEEEELLLLLLP<br />
weiss denn keiner wie ich das Porblem lösen kann?<br />
Mit so harten Bandagen wie TerminateThread oder so rangehen kann ja wohl kaum ne Lösung brauchbare Lösung sein oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/496997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/496997</guid><dc:creator><![CDATA[Windalf]]></dc:creator><pubDate>Wed, 07 Apr 2004 14:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Wed, 07 Apr 2004 15:56:36 GMT]]></title><description><![CDATA[<blockquote>
<p>Mit so harten Bandagen wie TerminateThread oder so rangehen kann ja wohl kaum ne Lösung brauchbare Lösung sein oder?</p>
</blockquote>
<p>nö, hab bisher noch keine einzige brauchbare anwendung von TerminateThread gesehen..</p>
<p>machs so:</p>
<pre><code class="language-cpp">void MyClass::StarThread()
{
   // mach dir event zu anhalten des threads
   HANDLE m_hStopEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
   // hier wird der thread gestartet
   HANDLE m_hThread = _beginthread(MyThread,0,this);
}
void MyClass::MyThread(void *p)
{
//...
   while(WaitForSingleObject(dp-&gt;hStopEvent,0)==WAIT_TIMEOUT)
   {
     // bla
   }
}

void StopThread()
{
   // sag dem thread das jetzt schluss ist
   SetEvent(m_hStopEvent);

   // warte bis er fertig hat
   WaitForSingleObject(m_hThread,INFINITE);

  // schließe deinen dialog oder was auch immer
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/497034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/497034</guid><dc:creator><![CDATA[CMatt]]></dc:creator><pubDate>Wed, 07 Apr 2004 15:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Wed, 07 Apr 2004 19:58:12 GMT]]></title><description><![CDATA[<p>das bringt ihn nichts da die anwendung dann nicht reagiert. sollte der Thread noch &gt; 5 Sekunden dauern ist das nicht gerade schön.</p>
<p>Ich habe dir die Lösung gesagt. Also versuche es so oder vergiss es. eine andere kenne ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/497147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/497147</guid><dc:creator><![CDATA[Unix-Tom]]></dc:creator><pubDate>Wed, 07 Apr 2004 19:58:12 GMT</pubDate></item><item><title><![CDATA[Reply to CDialog von Thread beenden lassen on Wed, 07 Apr 2004 20:04:37 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/156">@Unix-Tom</a><br />
Jo ich werds probieren hab jetzt aber gerade keinen Nerv mehr dafür... mach ich demnächst und werde dann eventuell noch Rückfragen haben</p>
<p>Danke Gruss Windalf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/497156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/497156</guid><dc:creator><![CDATA[Windalf]]></dc:creator><pubDate>Wed, 07 Apr 2004 20:04:37 GMT</pubDate></item></channel></rss>