<?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[User thread oder worker thread?]]></title><description><![CDATA[<p>Hallo,</p>
<p>in meinem Programm habe ich einen Dialog der mir einen Messwert anzeigt.<br />
Dieser Messwert erhalte ich ca. alle 3 Sekunden von einem Messgerät und muss ihn dann in meinem Dialog aktualisieren.<br />
Mein Problem ist, dass ich während des Kommunikationsvorganges zwischen PC und Messgerät den Dialog weder verschieben, noch beenden kann. Habe es mit einem Timer versucht doch die Performance ist alles andere als gut.<br />
Nun muss ich wohl doch einen 2. thread starten.</p>
<p>Meine Frage: was für einen thread soll ich nun erzeugen? Einen worker thread in dem ich die Kommunikation durchführe und die Werte im Dialog aktualisiere oder einen user thread, in dem ich auf ereignisse, wie zB das schließen des Dialoges warte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/189091/user-thread-oder-worker-thread</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 21:24:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/189091.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 08 Aug 2007 12:59:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to User thread oder worker thread? on Wed, 08 Aug 2007 12:59:42 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in meinem Programm habe ich einen Dialog der mir einen Messwert anzeigt.<br />
Dieser Messwert erhalte ich ca. alle 3 Sekunden von einem Messgerät und muss ihn dann in meinem Dialog aktualisieren.<br />
Mein Problem ist, dass ich während des Kommunikationsvorganges zwischen PC und Messgerät den Dialog weder verschieben, noch beenden kann. Habe es mit einem Timer versucht doch die Performance ist alles andere als gut.<br />
Nun muss ich wohl doch einen 2. thread starten.</p>
<p>Meine Frage: was für einen thread soll ich nun erzeugen? Einen worker thread in dem ich die Kommunikation durchführe und die Werte im Dialog aktualisiere oder einen user thread, in dem ich auf ereignisse, wie zB das schließen des Dialoges warte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340795</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340795</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 08 Aug 2007 12:59:42 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Wed, 08 Aug 2007 13:16:41 GMT]]></title><description><![CDATA[<p>Habe mich für worker thread entschieden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340805</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 08 Aug 2007 13:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Wed, 08 Aug 2007 13:23:46 GMT]]></title><description><![CDATA[<p>Ich starte einen worker thread mit einer Thread-Funktion</p>
<pre><code class="language-cpp">UINT MyThreadFunc(LPVOID pParam)
</code></pre>
<pre><code class="language-cpp">Zeiger=&amp;IrgendWelcheDaten;
CWinThread* pMeinFaden=AfxBeginThread(MeineFadenFunktion,Zeiger);
</code></pre>
<p>Wozu ist in diesem Code Zeiger verantwortlich?</p>
<p>Kann ich aus der Thread-Funktion eine Methode aufrufen? Wird die aufgerufene Methode dann in diesem Thread ausgeführt?</p>
<pre><code class="language-cpp">UINT MyThreadFunc(LPVOID pParam)
{
   MyFunc();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1340810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340810</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Wed, 08 Aug 2007 13:23:46 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Wed, 08 Aug 2007 14:49:31 GMT]]></title><description><![CDATA[<p>Der Zeiger ist dein pParam. Das gibst du der Funktion mit, die den Thread startet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1340889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1340889</guid><dc:creator><![CDATA[AndyDD]]></dc:creator><pubDate>Wed, 08 Aug 2007 14:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Wed, 08 Aug 2007 18:02:02 GMT]]></title><description><![CDATA[<p>Jo, damit du keine bösen globalen Variablen verwenden musst.<br />
Sonst kann der Worker-Thread ja nicht wissen was genau er tun soll, bzw. an welchen Dialog er Update-Nachrichten schicken soll etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341013</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 08 Aug 2007 18:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Thu, 09 Aug 2007 07:01:36 GMT]]></title><description><![CDATA[<p>Beim Versuch den Thread zu starten bekomme ich nun folgende Fehlermeldung:</p>
<pre><code class="language-cpp">AfxBeginThread: Durch keine der 2 Überladungen kann Parameter 1 vom Typ  'UINT(LPVOID) konvertiert werden'
</code></pre>
<p>Hier mein Code:</p>
<pre><code class="language-cpp">UINT CSipromTApp::MyDisplayThread(LPVOID pParam)
{
	CSipromTDoc* pDoc = (CSipromTDoc*)(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
	ASSERT(pDoc);

	if(pDoc-&gt;GetDeviceType() == 1) 
	{	
		MyTH100Com-&gt;MeasurementCom();
	}
}

void CSipromTApp::OnViewDisplay()
{
BOOL bCancel = FALSE;

	/* creates the dialog */
	MyDisplay=CDisplay::Instance(&amp;bCancel, AfxGetMainWnd());		
MyDisplay-&gt;InitialDialog();
	MyDisplay-&gt;ShowWindow(false);	
	MyDisplay-&gt;UpdateData(FALSE);

	LPVOID* pThreadData = &amp;bCancel;
	CWinThread* pMyThread = AfxBeginThread(MyDisplayThread, pThreadData);
</code></pre>
<p>Was mache ich denn alles falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341211</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Thu, 09 Aug 2007 07:01:36 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Thu, 09 Aug 2007 07:26:56 GMT]]></title><description><![CDATA[<p>Ist deine Thread-Funktion eine normale Methode? Wenn ja, ist das Problem klar: AfxBeginThread erwartet einen <em>Funktions</em>zeiger (d.h. eine globale Funktion oder static-Methode), keinen Methodenzeiger).</p>
<p>PS: Und ich würde dem Thread keine Adresse einer lokalen Variablen übergeben - die wird im schlimmsten Fall pulverisiert, lange bevor der Thread überhaupt zu Wort kommen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341226</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 09 Aug 2007 07:26:56 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Thu, 09 Aug 2007 07:30:00 GMT]]></title><description><![CDATA[<p>Ja das ist eine normale Methode. Also als globale Methode als extern deklarieren? Oder static davor schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1341230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341230</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Thu, 09 Aug 2007 07:30:00 GMT</pubDate></item><item><title><![CDATA[Reply to User thread oder worker thread? on Thu, 09 Aug 2007 07:36:13 GMT]]></title><description><![CDATA[<p>Okay, jetzt läufts.<br />
Doch wenn ich auf das Document zugreifen möchte, bekomme ich einen Fehler: unbehandelte Ausnahme: Lesezugriff</p>
<pre><code class="language-cpp">UINT CSipromTApp::MyDisplayThread(LPVOID pParam)
{
    CSipromTDoc* pDoc = (CSipromTDoc*)(((CMainFrame*)AfxGetMainWnd())-&gt;GetActiveDocument());
    ASSERT(pDoc);

    if(pDoc-&gt;GetDeviceType() == 1) 
    {    
        MyTH100Com-&gt;MeasurementCom();
    }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1341236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1341236</guid><dc:creator><![CDATA[maRKus23]]></dc:creator><pubDate>Thu, 09 Aug 2007 07:36:13 GMT</pubDate></item></channel></rss>