Why are threads so scary?

  • Thread starter Thread starter Jeffro
  • Start date Start date
J

Jeffro

I'm trying to learn threads so I created a simple dialog based MFC app
with an edit box, a Run button and an Exit button. Run starts a loop
that continually updates the edit control. How do I modify the code so
that the dialog responds to events? That is, so the Exit button will
work. Do I even need threads in this situation?

void CThreadPracticeDlg::OnBnClickedRun()
{
int i = 0;
while (1) {
if (i >= 10) {
i = 0;
}
char intString[2];
_itoa(i,intString,10);
CString msg = CString(intString);
m_edit1.SetWindowTextW(msg);
i++;
Sleep(500);
}
}

void CThreadPracticeDlg::OnBnClickedExit()
{
exit(0);
}
 
I'm trying to learn threads so I created a simple dialog based MFC app
with an edit box, a Run button and an Exit button. Run starts a loop
that continually updates the edit control. How do I modify the code so
that the dialog responds to events? That is, so the Exit button will
work. Do I even need threads in this situation?

void CThreadPracticeDlg::OnBnClickedRun()
{
int i = 0;
while (1) {
if (i >= 10) {
i = 0;
}
char intString[2];
_itoa(i,intString,10);
CString msg = CString(intString);
m_edit1.SetWindowTextW(msg);
i++;
Sleep(500);
}

}

void CThreadPracticeDlg::OnBnClickedExit()
{
exit(0);

}

----== Posted via Pronews.Com - Unlimited-Unrestricted-Secure Usenet News==----http://www.pronews.comThe #1 Newsgroup Service in the World! >100,000 Newsgroups
---= - Total Privacy via Encryption =---


Hi Jeffero,

I can see that your thread is running all the time since it is an
infinite loop. You are right that the UI and your internal program
should be on different thread so the UI is responsive even though your
loop is running. The exit button should stop the loop (thread) and
wait to see if the thread is finished, if it is then you exit
gracefully or terminate thread and exit. Hope this helps :)


Cheers,
Chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top