views:

98

answers:

1

I have a worker thread in a class that is owned by a ChildView. (I intend to move this to the Doc eventually.) When the worker thread completes a task I want all the views to be updated. How can I make a call to tell the Doc to issue an UpdateAllViews()? Or is there a better approach?

Thank you.


Added by OP: I am looking for a simple solution. The App is running on a single user, single CPU computer and does not need network (or Internet) access. There is nothing to cause a deadlock.

I think I would like to have the worker thread post (or send) a message to cause the views to update.

Everything I read about threading seems way more complicated than what I need - and, yes, I understand that all those precautions are necessary for applications that are running in multiprocessor, multiuser, client-server systems, etc. But none of those apply in my situation.

I am just stuck at getting the right combination of getting the window handle, posting the message and responding to the message in the right functions and classes to compile and function at all.

A: 

UpdateAllViews is not thread-safe, so you need to marshal the call to the main thread. I suggest you to signal a manual-reset event to mark your thread's completion and check the event's status in a WM_TIMER handler.

suggested reading:

Sheng Jiang 蒋晟
See added note.
Harvey
@Sheng, Thank you. I now have the message posting working. I will accept your answer to close the question, even though I didn't do it that way. Thanks again.
Harvey