<?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[Frage zu Henke soft Threads]]></title><description><![CDATA[<p>Hi zusammen,</p>
<p>ich mach grad die Threads im Henkesoft Tutorial.<br />
An der Stelle an der die CheckBox hinzu gefügt wir bekomm ich aber eine &quot;unknown software exception&quot;.</p>
<p>Ich versuch den Fehler schon seit ein paar Stunden zu finden aber es hilft nix.</p>
<p>Hier mal mein Code ...Dlg.cpp :</p>
<pre><code class="language-cpp">void CNeuDlg::OnButton1() 
{
	m_Flag = 1;							// Membervariable um Thread korrekt zu beenden
    CWinThread* pThread1 = AfxBeginThread (ThreadProc1, this);	
    CWinThread* pThread2 = AfxBeginThread (ThreadProc2, this);	

	pThread1-&gt;SetThreadPriority (THREAD_PRIORITY_HIGHEST);	
}
UINT CNeuDlg::ThreadProc1(LPVOID pParam) // ThreadFunktion
{
	CNeuDlg *pDlg = new CNeuDlg; 
	pDlg-&gt;ThreadRun1();
	return 0;
}
UINT CNeuDlg::ThreadProc2(LPVOID pParam) // ThreadFunktion
{
	CNeuDlg *pDlg = new CNeuDlg; 
	pDlg-&gt;ThreadRun2();
	return 0;
}
void CNeuDlg::ThreadRun1()		// Nicht statische Memberfunktion
{
	while (m_Flag)  
	{ 
		Sleep(10);
		m_ctrlCheck.SetCheck (TRUE);
		//  		::MessageBox (0,&quot;Thread 1 ausgelöst !&quot;,&quot;Thread&quot;,MB_OK);
	}	
}

void CNeuDlg::ThreadRun2()		// Nicht statische Memberfunktion
{
	while (m_Flag)  
	{ 
		Sleep(1001);
		m_ctrlCheck.SetCheck(FALSE);
		// 		::MessageBox (0,&quot;Thread 2 ausgelöst !&quot;,&quot;Thread&quot;,MB_OK);
	}	
}
</code></pre>
<p>Und der Code der ...Dlg.h :</p>
<pre><code class="language-cpp">class CNeuDlg : public CDialog
{
// Konstruktion
public:
	CNeuDlg(CWnd* pParent = NULL);	// Standard-Konstruktor

	int m_Flag;
	void ThreadRun1();
	void ThreadRun2();
	static UINT ThreadProc1(LPVOID pParam);
	static UINT ThreadProc2(LPVOID pParam);

// Dialogfelddaten
	//{{AFX_DATA(CNeuDlg)
	enum { IDD = IDD_NEU_DIALOG };
	CButton	m_ctrlCheck;
	//}}AFX_DATA

	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
	//{{AFX_VIRTUAL(CNeuDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV-Unterstützung
	//}}AFX_VIRTUAL

// Implementierung
protected:
	HICON m_hIcon;

	// Generierte Message-Map-Funktionen
	//{{AFX_MSG(CNeuDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnButton1();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.

#endif // !defined(AFX_NEUDLG_H__65B48A9F_DEAD_4D06_A375_B744FD7C5D27__INCLUDED_)
</code></pre>
<p>Danke für eure Mühe<br />
<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="😉"
    /><br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/176669/frage-zu-henke-soft-threads</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Apr 2026 03:34:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/176669.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Mar 2007 14:14:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Henke soft Threads on Fri, 23 Mar 2007 14:14:01 GMT]]></title><description><![CDATA[<p>Hi zusammen,</p>
<p>ich mach grad die Threads im Henkesoft Tutorial.<br />
An der Stelle an der die CheckBox hinzu gefügt wir bekomm ich aber eine &quot;unknown software exception&quot;.</p>
<p>Ich versuch den Fehler schon seit ein paar Stunden zu finden aber es hilft nix.</p>
<p>Hier mal mein Code ...Dlg.cpp :</p>
<pre><code class="language-cpp">void CNeuDlg::OnButton1() 
{
	m_Flag = 1;							// Membervariable um Thread korrekt zu beenden
    CWinThread* pThread1 = AfxBeginThread (ThreadProc1, this);	
    CWinThread* pThread2 = AfxBeginThread (ThreadProc2, this);	

	pThread1-&gt;SetThreadPriority (THREAD_PRIORITY_HIGHEST);	
}
UINT CNeuDlg::ThreadProc1(LPVOID pParam) // ThreadFunktion
{
	CNeuDlg *pDlg = new CNeuDlg; 
	pDlg-&gt;ThreadRun1();
	return 0;
}
UINT CNeuDlg::ThreadProc2(LPVOID pParam) // ThreadFunktion
{
	CNeuDlg *pDlg = new CNeuDlg; 
	pDlg-&gt;ThreadRun2();
	return 0;
}
void CNeuDlg::ThreadRun1()		// Nicht statische Memberfunktion
{
	while (m_Flag)  
	{ 
		Sleep(10);
		m_ctrlCheck.SetCheck (TRUE);
		//  		::MessageBox (0,&quot;Thread 1 ausgelöst !&quot;,&quot;Thread&quot;,MB_OK);
	}	
}

void CNeuDlg::ThreadRun2()		// Nicht statische Memberfunktion
{
	while (m_Flag)  
	{ 
		Sleep(1001);
		m_ctrlCheck.SetCheck(FALSE);
		// 		::MessageBox (0,&quot;Thread 2 ausgelöst !&quot;,&quot;Thread&quot;,MB_OK);
	}	
}
</code></pre>
<p>Und der Code der ...Dlg.h :</p>
<pre><code class="language-cpp">class CNeuDlg : public CDialog
{
// Konstruktion
public:
	CNeuDlg(CWnd* pParent = NULL);	// Standard-Konstruktor

	int m_Flag;
	void ThreadRun1();
	void ThreadRun2();
	static UINT ThreadProc1(LPVOID pParam);
	static UINT ThreadProc2(LPVOID pParam);

// Dialogfelddaten
	//{{AFX_DATA(CNeuDlg)
	enum { IDD = IDD_NEU_DIALOG };
	CButton	m_ctrlCheck;
	//}}AFX_DATA

	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
	//{{AFX_VIRTUAL(CNeuDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV-Unterstützung
	//}}AFX_VIRTUAL

// Implementierung
protected:
	HICON m_hIcon;

	// Generierte Message-Map-Funktionen
	//{{AFX_MSG(CNeuDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnButton1();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein.

#endif // !defined(AFX_NEUDLG_H__65B48A9F_DEAD_4D06_A375_B744FD7C5D27__INCLUDED_)
</code></pre>
<p>Danke für eure Mühe<br />
<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="😉"
    /><br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1251173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1251173</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Fri, 23 Mar 2007 14:14:01 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Henke soft Threads on Fri, 23 Mar 2007 14:33:22 GMT]]></title><description><![CDATA[<p>Danke, hab den Fehler !</p>
<p><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="🙂"
    /><br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1251186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1251186</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Fri, 23 Mar 2007 14:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Henke soft Threads on Sun, 25 Mar 2007 07:35:42 GMT]]></title><description><![CDATA[<p>Kannst Du Dich mal genauer auslassen? Wäre vielleicht einen Hinweis oder eine Änderung im Tutorial wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252038</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sun, 25 Mar 2007 07:35:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Henke soft Threads on Sun, 25 Mar 2007 11:41:45 GMT]]></title><description><![CDATA[<p>Hallo Hr. Dr. Henkes,</p>
<p>klar kann ich, es handelt sich um folgendes: in ihrem Mfc Tutorial, der Teil der die Threads behandelt, in dem Abschnit zur Synchronisation beschreiben Sie die Funktion :</p>
<pre><code class="language-cpp">void CThread001Dlg::thrRun3() 
{ 
  while (m_Flag)  
  { 
    m_strEdit2 = m_strEdit1; 
    UpdateData(FALSE); // &lt;------ Hier bekomme ich den Fehler
  }                                                                         
}
</code></pre>
<p>Führe ich den Quelltext genau so aus bekomme ich ständig die Fehlermeldung &quot;Debug Assertion Failed&quot;. Dies ist auf den Aufruf von UpdateData(False).<br />
Führe ich aber UpdateData in OnStart aus:</p>
<pre><code class="language-cpp">void CHeSoThread002Dlg::OnStart() 
{
	m_Flag = 1; 

	CWinThread* pThread1 = AfxBeginThread (ThreadFunction1, this);
	CWinThread* pThread2 = AfxBeginThread (ThreadFunction2, this); 
    CWinThread* pThread3 = AfxBeginThread (ThreadFunction3, this);
//**********************************************************************
	UpdateData (FALSE); // &lt;------ Hier klappts
//**********************************************************************	
}
</code></pre>
<p>funktioniert alles bestens !</p>
<p>Ich hoffe ich konnte behilflich sein <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="😉"
    /><br />
regards<br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252146</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Sun, 25 Mar 2007 11:41:45 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Henke soft Threads on Sun, 25 Mar 2007 12:50:14 GMT]]></title><description><![CDATA[<p>Aus einem Thread darf man nicht auf UI-Elemnte zugreifen die nicht in dem Thread erstellt wurden!<br />
Verwende WM_APP+x um dem &quot;Hautpthread&quot; mitzuteilen was Du auf der UI upgedated haben willst.<br />
Also *kein* UpdateData aus dem Thread heraus aufrufen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252197</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Sun, 25 Mar 2007 12:50:14 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Henke soft Threads on Sun, 25 Mar 2007 13:01:58 GMT]]></title><description><![CDATA[<p>Hi Jochen,</p>
<p>kannst Du ein bisschen konkreter werden wie das mit WM_APP+x funktioniert.</p>
<p><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="😉"
    /><br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1252202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1252202</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Sun, 25 Mar 2007 13:01:58 GMT</pubDate></item></channel></rss>