<?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[Threads richtig öffnen und schliessen]]></title><description><![CDATA[<p>Hi</p>
<p>ich hab ein Problem, das mein Thread entweder im Hauptdialog funktioniert oder nur vom Hauptdialog aufgerufenen Dialog.</p>
<p>Sobald mein Programm started wird im OnInitDialog ein Thread gestartet welcher denn ComPort überwacht. Diesen Thread stoppe bzw. beende ich wenn ich in meinem Hauptdialog denn Konfigurationsdialog öffne. Im Konfigurationsdialog starte ich wieder einen Thread und schliesse denn Thread wenn das Dialog beendet wird. Schliesslich wird der Thread im Hauptdialog wieder gestarted.</p>
<p>Das komische ist das der Thread nur im Hauptdialog funktioniert und immer noch funktioniert wenn ich ihn wieder starte nachdem ich Dialog2 geschlossen habe. Jedoch funktioniert der Thread für Dialog2 nicht. Genauso ist es umgekehrt das wenn ich denn Thread im Hauptdialog nie starte, der Thread in Dialog 2 dann funktioniert.</p>
<p>Thread Start Methode:</p>
<pre><code>//
// start comm watching
//
BOOL CSerialPort::StartMonitoring()
{

	if (!(m_Thread = AfxBeginThread(CommThread, this)))
		return FALSE;  [i][b]//Starte Thread[/b][/i]
	TRACE(&quot;Thread started\n&quot;);
	return TRUE;	
}
</code></pre>
<p>Thread Stop Methode:</p>
<pre><code>//
// Suspend the comm thread
//
BOOL CSerialPort::StopMonitoring()
{
	CloseHandle(m_hComm); [i][b]//Schliesse ComPort, gebe ComPort frei[/b][/i]
	m_Thread-&gt;SuspendThread(); [b]//Stoppe Thread[/b]
	TRACE(&quot;Thread suspended\n&quot;);
	return TRUE;	
}
</code></pre>
<p>Aufruf:</p>
<pre><code>StartMonitoring(); //Starte Thread;
</code></pre>
<p>Stoppe Thread und starte Dialog:</p>
<pre><code>m_Ports[0].StopMonitoring(); [i][b]//stop comport (Scanner) monitoring[/b][/i]

	CAddItemDlg* addItemDlg = new CAddItemDlg(this);
	addItemDlg-&gt;DoModal();

	m_Ports[0].StartMonitoring();[i][b] //start scanner comport monitoring[/b][/i]
</code></pre>
<p>Hilfe bitte helfen.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/74515/threads-richtig-öffnen-und-schliessen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 09:21:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/74515.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 May 2004 13:20:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Mon, 24 May 2004 08:31:30 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>ich hab ein Problem, das mein Thread entweder im Hauptdialog funktioniert oder nur vom Hauptdialog aufgerufenen Dialog.</p>
<p>Sobald mein Programm started wird im OnInitDialog ein Thread gestartet welcher denn ComPort überwacht. Diesen Thread stoppe bzw. beende ich wenn ich in meinem Hauptdialog denn Konfigurationsdialog öffne. Im Konfigurationsdialog starte ich wieder einen Thread und schliesse denn Thread wenn das Dialog beendet wird. Schliesslich wird der Thread im Hauptdialog wieder gestarted.</p>
<p>Das komische ist das der Thread nur im Hauptdialog funktioniert und immer noch funktioniert wenn ich ihn wieder starte nachdem ich Dialog2 geschlossen habe. Jedoch funktioniert der Thread für Dialog2 nicht. Genauso ist es umgekehrt das wenn ich denn Thread im Hauptdialog nie starte, der Thread in Dialog 2 dann funktioniert.</p>
<p>Thread Start Methode:</p>
<pre><code>//
// start comm watching
//
BOOL CSerialPort::StartMonitoring()
{

	if (!(m_Thread = AfxBeginThread(CommThread, this)))
		return FALSE;  [i][b]//Starte Thread[/b][/i]
	TRACE(&quot;Thread started\n&quot;);
	return TRUE;	
}
</code></pre>
<p>Thread Stop Methode:</p>
<pre><code>//
// Suspend the comm thread
//
BOOL CSerialPort::StopMonitoring()
{
	CloseHandle(m_hComm); [i][b]//Schliesse ComPort, gebe ComPort frei[/b][/i]
	m_Thread-&gt;SuspendThread(); [b]//Stoppe Thread[/b]
	TRACE(&quot;Thread suspended\n&quot;);
	return TRUE;	
}
</code></pre>
<p>Aufruf:</p>
<pre><code>StartMonitoring(); //Starte Thread;
</code></pre>
<p>Stoppe Thread und starte Dialog:</p>
<pre><code>m_Ports[0].StopMonitoring(); [i][b]//stop comport (Scanner) monitoring[/b][/i]

	CAddItemDlg* addItemDlg = new CAddItemDlg(this);
	addItemDlg-&gt;DoModal();

	m_Ports[0].StartMonitoring();[i][b] //start scanner comport monitoring[/b][/i]
</code></pre>
<p>Hilfe bitte helfen.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/524627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/524627</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Mon, 24 May 2004 08:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Tue, 25 May 2004 12:08:42 GMT]]></title><description><![CDATA[<p>wenn du einen thread von neuem startest muss man das mit AfxBeginThread<br />
machen, das ist richtig</p>
<p>wenn du ihn zwischendurch stoppen willst mit suspendThread()<br />
auch richtig</p>
<p>aber wenn du den gleichen wieder starten willst mit resumeThread()</p>
<p>in deinem beispiel legst du immer wieder einen neuen thread an</p>
<p>der aufruf im zweiten dialog seh ich leider hier nicht.also weiß ich nciht was da falsch sein kann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/526934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/526934</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Tue, 25 May 2004 12:08:42 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Wed, 26 May 2004 07:14:34 GMT]]></title><description><![CDATA[<p>im zweiten dialog rufe ich genaus denn Thread wie im Hauptdialog und schliesse ihn auch genauso. ausserdem kann ich ja bei resume eines Threads ja nicht angeben wer jetzt das Parent Window ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> oder?</p>
<p>das mit resume thread weiss ich. Jedoch wenn ich resume thread im zweiten Dialog aufrufe reagiert er im ersten Dialog und nicht im zweiten Dialog.</p>
<p>z.B. ich hab ein Kassensystem, Thread wird gestarted welcher ComPort auf ein Scan vorgang wartet, bis ein Produkt eingescannt wird und fügt schliesslich das Produkt in die ListBox. Existiert das Produkt (Barcode) nicht in der Datenbank, rufe ich z.B. mit der Taste F6 ein Dialog auf mit dem ich ein neues Produkt anlegen kann. Dazu muss ich doch im ersten Dialog die überwachung ausschliessen und denn Thread stoppen. Mach ich ein ResumeThread im 2.ten Dialog dann reagiert im Hintergrund der Hauptdialog und das möchte ich nicht.</p>
<p>Es muss doch irgendwie zu gehen sein. <strong>Schliessen und das komplette LÖSCHEN einse Threads muss doch möglich sein.</strong> Dann dürfte doch kein Problem entstehen. Nur wie.</p>
<p>Bin total verzweifelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/527046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/527046</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Wed, 26 May 2004 07:14:34 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Wed, 26 May 2004 10:02:12 GMT]]></title><description><![CDATA[<p>gib mir mal das coding wie du das im zweiten dialog aufrufst</p>
<p>das richtige beenden geht ja nicht mit dieser methode sondern mit afxendthread()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/527496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/527496</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Wed, 26 May 2004 10:02:12 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Wed, 26 May 2004 11:34:59 GMT]]></title><description><![CDATA[<p>wäre super wenn du mein problem lösen könntest. hänge schon seit wochen und kommme nicht weiter. also.. die methoden habe ich oben schon erläutert.</p>
<p>wenn ich F8 drücke wird der Thread im Hauptdialog beendet und ein Dialog2 aufgerufen <strong>und nachdem der Dialog2 geschlossen wird dieser Thread wieder gestarted</strong>, das macht diese Methode:</p>
<pre><code>void CKasseDlg::OnProduktverwaltungNeuesprodukteinf()
{
	m_Ports[0].StopMonitoring(); //stop comport (Scanner) monitoring

	CAddItemDlg* addItemDlg = new CAddItemDlg(this);
	addItemDlg-&gt;DoModal();

	[b]m_Ports[0].StartMonitoring(); //start scanner comport monitoring again[/b]
}
</code></pre>
<p>danach in OnInitDialog vom Dialog2 wird Thread und der ComPort intialisiert:</p>
<pre><code>// init the ports
	if (m_Ports[0].InitPort(this, 1, 9600, 'N',8,1,EV_RXCHAR,512))
         //start Thread
	m_Ports[0].StartMonitoring();
</code></pre>
<p>danach mache ich meine Eingabe und drücke ok übernhem die Werte und beende denn Thread von diesem Dialog:</p>
<pre><code>//stop monitor com port thread
			m_Ports[0].StopMonitoring();
</code></pre>
<p>wie gesagt funktioniert nur ein Thread entweder im Haupt dialog oder in dem aufgerufenen Dialog2. Ich kommentiere denn code jeweils für denn Dialog aus. Dann geht das andere. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>ich hoffe so sehr das du mir helfen kannst. WÄRE SUPER <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/527584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/527584</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Wed, 26 May 2004 11:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Wed, 26 May 2004 15:10:48 GMT]]></title><description><![CDATA[<p>also das m_ports in deiner dialog2 klasse ist das das gleiche objekt das im hauptfenster verwendet wird? oder sind zwei unterschiedliche?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/527761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/527761</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Wed, 26 May 2004 15:10:48 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Wed, 26 May 2004 17:05:31 GMT]]></title><description><![CDATA[<p>es existiert einmal im<br />
Hauptdialog und einmal im Dialog 2</p>
<p>Die Thread Klasse habe jeweils in beide Klassen des Dialogs importiert und in der Klasse des jeweiligen Dialogs ein Objekt erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/527834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/527834</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Wed, 26 May 2004 17:05:31 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Thu, 27 May 2004 09:52:58 GMT]]></title><description><![CDATA[<p>ok wenn das wirklich so ist, dann versteh ich das problem nicht mehr, weil dann beide threads voneinander unabhängig sind.</p>
<p>sind aber schon worker threads oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/528120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/528120</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Thu, 27 May 2004 09:52:58 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Thu, 27 May 2004 13:37:02 GMT]]></title><description><![CDATA[<p>worker threads ?</p>
<p>ja aber kann es daran liegen das jeweils beide threads einen zugriff auf denn ComPort machen, diesen intialisieren und schliessen ? Jedoch müsste eigentlich nichts passieren dar ich ja mit</p>
<p>m_Port[0].stopMonitoring();</p>
<p>denn Thread ja stoppe und auch denn handel zum ComPort schliesse. Deshalb darf hier doch kein Problem entstehen. Ausserdem wenn beid Threads startbereit sind funktioniert der 2.te Thread nur wenn ich im Debug modus bin. Schliese ich denn Dialog 2 dann bekomme ich ich eine Fehlermeldung an der stelle bei der Methode stopMonotoring() ... m-&gt;SuspendThread() manchmal auch über ComPort1.</p>
<p>Kann es sein das ich evtl. eine warteschleife brauche bevor ich denn einen Thread schliesse und denn anderen starte, damit genug zeit für das schliessen und öffnen des comports gewährleistet ist ?? Wenn ja wie mache ich das ??</p>
<p>Mann ich bin am Arsch... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/528297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/528297</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Thu, 27 May 2004 13:37:02 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Fri, 28 May 2004 11:35:02 GMT]]></title><description><![CDATA[<p>es gibt methoden die darauf schauen ob die threads wirklich beendet wurden</p>
<p>und wie ich ja schon gesagt habe, darst du nicht nur suspendthread machen<br />
sonder du musst AFXENDTHREAD aufrufen, das gegenstück zum afxbeginthread()</p>
<p>ich denke mal schon das du einen worker thread gebaut hast <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>beim schließen deines dialoges solltest du auf alle fälle den AfxEndThread aufrufen. sonst hängt der doch immer noch in der prozessschleife</p>
]]></description><link>https://www.c-plusplus.net/forum/post/528927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/528927</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Fri, 28 May 2004 11:35:02 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Fri, 28 May 2004 12:00:38 GMT]]></title><description><![CDATA[<p>void AFXAPI AfxEndThread(<br />
UINT nExitCode,<br />
BOOL bDelete = TRUE<br />
);</p>
<p>Parameters<br />
nExitCode<br />
Specifies the exit code of the thread.</p>
<p>hmm... kann ja mal probieren jedoch wie bekomme ich denn nExitCode damit AfxEndThread auch mitbekommt welcher thread es ist ? In der CWinThread klasse habe ich nichts gefunden welches mir den ExitCode eines Threads zurückliefert.</p>
<p>gruss<br />
Indian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/528949</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/528949</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Fri, 28 May 2004 12:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Fri, 28 May 2004 12:27:12 GMT]]></title><description><![CDATA[<p>Call this function to terminate the currently executing thread.</p>
<p>du musst das nur aufrufen,den exit code bekommst du ja um zu wissen ob es gut ging.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/528987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/528987</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Fri, 28 May 2004 12:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Fri, 28 May 2004 12:35:13 GMT]]></title><description><![CDATA[<p>du musst kein exit code angeben, den bekommst du zurück.<br />
musst mal in der msdn gucken was für was steht</p>
<p>0 ist glaub ich succeeded</p>
]]></description><link>https://www.c-plusplus.net/forum/post/528995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/528995</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Fri, 28 May 2004 12:35:13 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Fri, 28 May 2004 13:36:01 GMT]]></title><description><![CDATA[<p>AfxEndThread(UINT nExitCode,BOOL bDelete = TRUE);</p>
<p>laut definition siehe oben verlangt AfxEndThread UINT nExitCode :p</p>
<p>hier der Beweis</p>
<pre><code>c:\Dokumente und Einstellungen\Administrator\Eigene Dateien\Visual Studio Projects\Kasse\Kasse\SerialPort.cpp(488): error C2660: 'AfxEndThread' : function does not take 0 parameters
</code></pre>
<p>ausserdem wird AfxEndThread nicht innerhalb des Threads aufgerufen ??? Ich hab doch keinen Zugriff auf dem Thread. Ich will ihn doch von aussen schliessen d.h. wenn ich F8 drücke jedoch ist der Thread ja ne Endschlossschleife welcher in von einer anderen Klasse eingebunden wurde der nur denn ComPort überwacht. Mit AfxEndThread würde der Thread nur einmal fragen ob was am ComPort anliegt. Was hab ich dann davon AfxEndThread aufzurufen welcher doch den ExitCode verlangt. Bekomme immer ne Fehlermeldung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/529021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/529021</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Fri, 28 May 2004 13:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Tue, 01 Jun 2004 09:32:45 GMT]]></title><description><![CDATA[<p>natürlich musst die variable mitgeben, das das eine output variable ist.<br />
ist doch logisch <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>
]]></description><link>https://www.c-plusplus.net/forum/post/530749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/530749</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Tue, 01 Jun 2004 09:32:45 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Tue, 01 Jun 2004 09:58:42 GMT]]></title><description><![CDATA[<p>AfxEndThread bringt nichts .. man kann es nur innerhalb des Threads aufrufen. Macht leider null sinn <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/530777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/530777</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Tue, 01 Jun 2004 09:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Tue, 01 Jun 2004 11:07:44 GMT]]></title><description><![CDATA[<p>finde einfach kein Beispiel wie ich AfxEndThread verwenden kann.</p>
<p>Ob es in dem Fall überhaupt auch interessant ist ? Kann es ja nur innerhalb aufrufen.</p>
<p>Mist glaub nicht das ich es irgendwann noch löse.. Ich lauf amok</p>
]]></description><link>https://www.c-plusplus.net/forum/post/530825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/530825</guid><dc:creator><![CDATA[Indian]]></dc:creator><pubDate>Tue, 01 Jun 2004 11:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Threads richtig öffnen und schliessen on Wed, 02 Jun 2004 10:00:56 GMT]]></title><description><![CDATA[<p>les das mal Multithreading: Terminating Threads</p>
<p>in der msdn</p>
]]></description><link>https://www.c-plusplus.net/forum/post/531482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/531482</guid><dc:creator><![CDATA[miss c++]]></dc:creator><pubDate>Wed, 02 Jun 2004 10:00:56 GMT</pubDate></item></channel></rss>