<?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[while Schleife in neuen Thread]]></title><description><![CDATA[<p>Moin moin zusammen,</p>
<p>ich arbeite gerade unter Qt und habe eine Run Funktion in der eine while Schleife läuft:</p>
<pre><code>int Application::Run()
{
	MSG msg = {};

	theTimer-&gt;Initialize();

	while( msg.message != WM_QUIT &amp;&amp; m_bCloseApp != true )
	{
		if( PeekMessage( &amp;msg, 0, 0, 0, PM_REMOVE ) )
		{
			TranslateMessage( &amp;msg );
			DispatchMessage( &amp;msg );
		}
		else
		{
			if( m_bPauseUpdate != true )
			{
				if(Update() != 0) break;
			}
			if( m_bPauseRender != true )
			{
				Render();
			}
			theTimer-&gt;Tick();
		}
	}

	return ERR_SUCCESS;
}
</code></pre>
<p>Das Problem ist nun das diese Schleife Qt komplett blockiert. Ich habe versucht anhand von Tutorials diese Funktion sammt der while Schleife in einem neuen Thread laufen zu lassen, bekomme es aber einfach nicht gebacken.</p>
<pre><code>CEditor::CEditor(QWidget *parent)
	: QMainWindow(parent)
{
	//.........

	std::thread engineUpdate( &amp;Application::Run, m_engine );
	engineUpdate.join();
}
</code></pre>
<p>Im Moment wirft mit Visual Studio einen C2100 Error um die Ohren und egal wie es aussieht, entweder bekomme ich einen Error oder nach dem compilieren heißt es &quot;Das Programm regiert nicht mehr&quot;. Weiß jemand woran es liegt bzw. was ich falsch mache?</p>
<p>Gruß BlackArma</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/326882/while-schleife-in-neuen-thread</link><generator>RSS for Node</generator><lastBuildDate>Tue, 26 May 2026 05:00:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326882.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Jul 2014 13:49:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to while Schleife in neuen Thread on Fri, 11 Jul 2014 13:49:00 GMT]]></title><description><![CDATA[<p>Moin moin zusammen,</p>
<p>ich arbeite gerade unter Qt und habe eine Run Funktion in der eine while Schleife läuft:</p>
<pre><code>int Application::Run()
{
	MSG msg = {};

	theTimer-&gt;Initialize();

	while( msg.message != WM_QUIT &amp;&amp; m_bCloseApp != true )
	{
		if( PeekMessage( &amp;msg, 0, 0, 0, PM_REMOVE ) )
		{
			TranslateMessage( &amp;msg );
			DispatchMessage( &amp;msg );
		}
		else
		{
			if( m_bPauseUpdate != true )
			{
				if(Update() != 0) break;
			}
			if( m_bPauseRender != true )
			{
				Render();
			}
			theTimer-&gt;Tick();
		}
	}

	return ERR_SUCCESS;
}
</code></pre>
<p>Das Problem ist nun das diese Schleife Qt komplett blockiert. Ich habe versucht anhand von Tutorials diese Funktion sammt der while Schleife in einem neuen Thread laufen zu lassen, bekomme es aber einfach nicht gebacken.</p>
<pre><code>CEditor::CEditor(QWidget *parent)
	: QMainWindow(parent)
{
	//.........

	std::thread engineUpdate( &amp;Application::Run, m_engine );
	engineUpdate.join();
}
</code></pre>
<p>Im Moment wirft mit Visual Studio einen C2100 Error um die Ohren und egal wie es aussieht, entweder bekomme ich einen Error oder nach dem compilieren heißt es &quot;Das Programm regiert nicht mehr&quot;. Weiß jemand woran es liegt bzw. was ich falsch mache?</p>
<p>Gruß BlackArma</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408211</guid><dc:creator><![CDATA[BlackArma]]></dc:creator><pubDate>Fri, 11 Jul 2014 13:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to while Schleife in neuen Thread on Fri, 11 Jul 2014 14:18:45 GMT]]></title><description><![CDATA[<p>PeekMessage, TranslateMessage und DispatchMessage sind WinAPI und hätten von QT komplett weggekapselt worden sein sollen. Die Windows Messagequeue ist pro Thread, du kannst nur Nachrichten von Fenstern empfangen, die auch in diesem Thread geöffnet wurden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408218</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Fri, 11 Jul 2014 14:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to while Schleife in neuen Thread on Fri, 11 Jul 2014 14:32:09 GMT]]></title><description><![CDATA[<p>Ja, das ist mir schon klar... Nachdem ich den Post verfasst hatte habe ich auch daran gedacht und den WinAPI Krahm entfernt, hat aber trotzdem nichts gebracht.<br />
Habs gerade in einer speraten Funktion stehen:</p>
<pre><code>void Application::RunEditor()
{
	theTimer-&gt;Initialize();

	while( m_bCloseApp != true)
	{
		if( m_bPauseUpdate != true )
		{
			if(Update() != 0) break;
		}
		if( m_bPauseRender != true )
		{
			Render();
		}
		theTimer-&gt;Tick();
	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2408221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408221</guid><dc:creator><![CDATA[BlackArma]]></dc:creator><pubDate>Fri, 11 Jul 2014 14:32:09 GMT</pubDate></item><item><title><![CDATA[Reply to while Schleife in neuen Thread on Sat, 12 Jul 2014 11:51:34 GMT]]></title><description><![CDATA[<p>Naja, was hast du dir denn bei dem <code>engineUpdate.join();</code> gedacht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408297</guid><dc:creator><![CDATA[qqq]]></dc:creator><pubDate>Sat, 12 Jul 2014 11:51:34 GMT</pubDate></item><item><title><![CDATA[Reply to while Schleife in neuen Thread on Tue, 15 Jul 2014 14:32:21 GMT]]></title><description><![CDATA[<p>std::thread::detach() suchst du.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2408760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2408760</guid><dc:creator><![CDATA[sdpfjdfmmklg]]></dc:creator><pubDate>Tue, 15 Jul 2014 14:32:21 GMT</pubDate></item></channel></rss>