<?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[Parameterübergabe in einem Thread??]]></title><description><![CDATA[<p>hi!</p>
<p>Kann ich einer Funktion die in einem Thread aufgerufen wird einen Parameter übergeben? Wenn ja, wie??</p>
<p>Der Methode sendFile würde ich gerne einen CString übergeben....</p>
<pre><code class="language-cpp">void Transaction::doSend()
{
	///Create a thread for sending data   
	//
	//
	CWinThread * Callback_Thread;
    Callback_Thread = AfxBeginThread(
               ThreadSend,               // function to run on thread
               (LPVOID)this,                // value to pass to function
               THREAD_PRIORITY_NORMAL,   // thread's priority
               0,                        // stack size
               CREATE_SUSPENDED,         // create susupended thread
               NULL);               

	//start thread
	Callback_Thread-&gt;ResumeThread();

//	MessageBox(NULL, (CString)&quot;thread!&quot;, &quot;WuffBox_Dbg&quot;, MB_OK);

}
</code></pre>
<pre><code class="language-cpp">UINT ThreadSend(LPVOID  xthis)
{
	int tsg_return = 0;

	Transaction* _this = (Transaction*)xthis;
	tsg_return = _this-&gt;sendFile();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/59329/parameterübergabe-in-einem-thread</link><generator>RSS for Node</generator><lastBuildDate>Thu, 04 Jun 2026 08:12:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/59329.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 21 Dec 2003 16:53:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Sun, 21 Dec 2003 16:53:22 GMT]]></title><description><![CDATA[<p>hi!</p>
<p>Kann ich einer Funktion die in einem Thread aufgerufen wird einen Parameter übergeben? Wenn ja, wie??</p>
<p>Der Methode sendFile würde ich gerne einen CString übergeben....</p>
<pre><code class="language-cpp">void Transaction::doSend()
{
	///Create a thread for sending data   
	//
	//
	CWinThread * Callback_Thread;
    Callback_Thread = AfxBeginThread(
               ThreadSend,               // function to run on thread
               (LPVOID)this,                // value to pass to function
               THREAD_PRIORITY_NORMAL,   // thread's priority
               0,                        // stack size
               CREATE_SUSPENDED,         // create susupended thread
               NULL);               

	//start thread
	Callback_Thread-&gt;ResumeThread();

//	MessageBox(NULL, (CString)&quot;thread!&quot;, &quot;WuffBox_Dbg&quot;, MB_OK);

}
</code></pre>
<pre><code class="language-cpp">UINT ThreadSend(LPVOID  xthis)
{
	int tsg_return = 0;

	Transaction* _this = (Transaction*)xthis;
	tsg_return = _this-&gt;sendFile();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/420974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/420974</guid><dc:creator><![CDATA[l00P]]></dc:creator><pubDate>Sun, 21 Dec 2003 16:53:22 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Sun, 21 Dec 2003 17:15:42 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>versteh deine Frage nicht ganz</p>
<pre><code class="language-cpp">UINT ThreadSend(LPVOID  xthis) 
{ 
    int tsg_return = 0; 
     Transaction* _this = (Transaction*)xthis; 
    CString strFile = &quot;C:\\test.txt&quot;;
    tsg_return = _this-&gt;sendFile(strFile); 
    return 0; 
}
</code></pre>
<p>Grüße Rapha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/421001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/421001</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Sun, 21 Dec 2003 17:15:42 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Mon, 22 Dec 2003 09:25:26 GMT]]></title><description><![CDATA[<p>ja danke, dachte mal wieder ein bißchen ums Eck <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="🙂"
    /> <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>
<p>Andere Frage: Ich habe einen Thread gestartet mit sagen wir der Function doSend();<br />
wie kann ich diese function aufrufen ohne immer einen neuen thread aufzumachen?? oder ist es besser den thread jedesmal zu terminieren und einen neuen zu erstellen wenn ich diese function brauche??</p>
<p>danke<br />
l00P</p>
]]></description><link>https://www.c-plusplus.net/forum/post/421269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/421269</guid><dc:creator><![CDATA[l00P]]></dc:creator><pubDate>Mon, 22 Dec 2003 09:25:26 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Mon, 22 Dec 2003 09:37:47 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>muss nochmal etwas genauer nachfragen <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>
<blockquote>
<p>Ich habe einen Thread gestartet mit sagen wir der Function doSend();</p>
</blockquote>
<p>Wie meinst du das? Ist doSend() die Threadfunktion (verwendest du also AfxBeginThread(doSend,...)) [Fall 1] oder startest du in dieser Funktion den Thread (mit AfxBeginThread(ThreadFunc...)) [Fall 2].</p>
<pre><code>wie kann ich diese function aufrufen ohne immer einen neuen thread aufzumachen??
</code></pre>
<p>bei [Fall 1]<br />
ganz normal also mit</p>
<pre><code class="language-cpp">doSend(und_den_parameter_den_du_selbst_bestimmt_hast);
</code></pre>
<p>Die Funktion läuft dann halt in dem Thread, von dem du sie aufgerufen hast (normalerweise der Hauptthread).</p>
<p>bei [Fall 2]<br />
Du übergibst der Funktion einfach einen Parameter (bool), der bestimmt, ob der &quot;Inhalt&quot; der Funktion in einem neuen Thread laufen soll, oder im selben, von dem die Funktion aufgerufen wurde.</p>
<blockquote>
<p>oder ist es besser den thread jedesmal zu terminieren und einen neuen zu erstellen wenn ich diese function brauche??</p>
</blockquote>
<p>Ich würde sagen, kommt drauf an, was der Thread macht. Wenn er z.B. in eine Datei schreibt, dann musst du den vorherigen Thread beendet, sonst gibts ein kuddelmuddel :p</p>
<p>Grüße Rapha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/421282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/421282</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Mon, 22 Dec 2003 09:37:47 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Mon, 22 Dec 2003 13:52:22 GMT]]></title><description><![CDATA[<p>danke, kenn mich aus soweit.... <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>bloß noch: Wird bei jedem Aufruf von resumeThread() der therad neu gestartet oder nur weitergeführt??</p>
<p>lg<br />
l00P</p>
]]></description><link>https://www.c-plusplus.net/forum/post/421472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/421472</guid><dc:creator><![CDATA[l00P]]></dc:creator><pubDate>Mon, 22 Dec 2003 13:52:22 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Mon, 22 Dec 2003 14:31:04 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>wenn du ResumeThread auf einen angehaltenen Thread (SuspendThread()) aufrufst, wird der Thread (genauer gesagt die Threadfunktion) neu gestartet.<br />
Ich bin mir zwar ziemlich sicher, geb dir aber keine Garantie <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>
<p>Grüße Rapha</p>
]]></description><link>https://www.c-plusplus.net/forum/post/421502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/421502</guid><dc:creator><![CDATA[Rapha]]></dc:creator><pubDate>Mon, 22 Dec 2003 14:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Thu, 29 Jan 2004 23:56:49 GMT]]></title><description><![CDATA[<p>Bin mir ziemlich sicher, das der Thread dann an der selben Stelle weitermacht.</p>
<p>Egal, ich wollte eine Frage zur eigentlichen Topic stellen.<br />
Möchte beim Aufruf von axfbeginthread eine simple integer-Variable übergeben.<br />
Irgendwo im Netz habe ich gefunden, dass es so wohl gehen könnte:</p>
<pre><code>int neu=6;
pThread1 = AfxBeginThread(thrFunction1,(LPVOID)&amp;neu);
</code></pre>
<pre><code>UINT CThreadTestDlg::thrFunction1(LPVOID pParam)  
{  
  CThreadTestDlg* pDlg = (CThreadTestDlg*) pParam;
  int test=(int)pParam;
  pDlg-&gt;thrRun1(test);  
  return 0;  
}
</code></pre>
<p>Die Funktion thrRun1 brauche ich dann für meinen eigentlichen Kram.<br />
Leider kommt beim ausführen eine Fehlermeldung. Warum?<br />
Bin mir auch bei dem '&amp;' vor neu nicht sicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/447481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/447481</guid><dc:creator><![CDATA[guelling]]></dc:creator><pubDate>Thu, 29 Jan 2004 23:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Fri, 30 Jan 2004 08:57:29 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">UINT CThreadTestDlg::thrFunction1(LPVOID pParam)   
{   
  CThreadTestDlg* pDlg = (CThreadTestDlg*) pParam; 
  int test=(int)pParam; 
  pDlg-&gt;thrRun1(test);   
  return 0;   
}
</code></pre>
</blockquote>
<p>Omg, was machst du den hier ?</p>
<blockquote>
<p>pThread1 = AfxBeginThread(thrFunction1,(LPVOID)&amp;neu);</p>
</blockquote>
<p>ok, dein pParam ist also nen zeiger auf nen int ...</p>
<blockquote>
<p>CThreadTestDlg* pDlg = (CThreadTestDlg*) pParam;</p>
</blockquote>
<p>du versuchst nen int* auf nen CThreadTestDlg* zu casten, aua !<br />
und auch noch boeser c-Cast !!!</p>
<p>besser, gib deinem CThreadTestDlg nen member als int ... also von miraus, int neu; kann private sein ....</p>
<pre><code class="language-cpp">neu=6; // Member, du rufst sicher deinen thread aus dem dialog auf ... 
pThread1 = AfxBeginThread(thrFunction1,this); // sollte kein cast noetig sein !
</code></pre>
<p>]</p>
<pre><code class="language-cpp">UINT CThreadTestDlg::thrFunction1(LPVOID pParam)   
{   
  CThreadTestDlg* pDlg = reinterpret_cast&lt;CThreadTestDlg*&gt;(pParam); 
  int test=pParam-&gt;neu; // erriner dich, dein int war nu member am dialog
  pDlg-&gt;thrRun1(test); // Da du den zeiger auf den dialog hasst, kannst da auch funktionen aufrufen   
  return 0;   
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/447548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/447548</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 30 Jan 2004 08:57:29 GMT</pubDate></item><item><title><![CDATA[Reply to Parameterübergabe in einem Thread?? on Fri, 30 Jan 2004 13:27:55 GMT]]></title><description><![CDATA[<p>Hmm, das mit der Membervariable ist ungünstig.<br />
Ich rufe diese Funktion mehrmals in Schleifen auf, jedesmal soll ein bestimmter Parameter übergeben werden. Ausserdem lief es ja schon mal alles, bevor ich zu MFC gewechselt bin.</p>
<p>So funktioniert es ja:</p>
<pre><code>pThread1 = AfxBeginThread(thrFunction1,this);
</code></pre>
<pre><code>UINT CThreadTestDlg::thrFunction1(LPVOID pParam)   
{   
  CThreadTestDlg* pDlg = (CThreadTestDlg*) pParam; 
  pDlg-&gt;thrRun1();   
  return 0;   
}
</code></pre>
<p>Aber der gewünschte int-Parameter fehlt.<br />
Vorher sah es so aus:</p>
<pre><code>DWORD WINAPI thrRun1(LPVOID pParam)
{
  int test=(int)pParam;
  ...
  return((DWORD)pParam);
}
</code></pre>
<pre><code>int neu=5;
::pThread1 = CreateThread(	NULL,0,thrRun1,(LPVOID)neu,0,&amp;::Thread1ID);
</code></pre>
<p>Leider müssen die Thread-Start-Funktionen ja statisch sein, sobald sie in einer Klasse sind, deswegen brauche ich die jetzige Konstruktion um wieder eine nichtstatische Funktion aufzurufen.<br />
Was habe ich für Möglichkeiten den ersten Code dasselbe tun zulassen wie den zweiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/447735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/447735</guid><dc:creator><![CDATA[guelling]]></dc:creator><pubDate>Fri, 30 Jan 2004 13:27:55 GMT</pubDate></item></channel></rss>