2011-10-02 66 views
0

我有一个Borland C++项目,我看到一个工作线程可以用来将任务委派给主线程并等待任务完成的synchronize()方法。在C#中,有一个类似的Control.Invoke()方法。对于GUI和控制台应用程序,在Visual Studio中使用C++时有什么相似之处吗? SendMessage()出现在我的脑海里,但是等于上面两个?如何将任务委托给主线程并等待其执行完成?

+0

请注意,这不是关于C++,而是关于操作系统和系统特定的库。 C++没有任何多任务支持标准化(但...) – littleadv

回答

1

SendMessage适用于GUI应用程序,其中主线程具有消息队列。对于控制台应用程序,没有通用的方法。您需要首先决定主线程如何处理这些请求。如果Console应用程序的主线程具有消息队列,则SendMessage也可以。您可以考虑另一种方式,例如使用事件,每个事件取决于主应用程序线程的行为以及处理来自其他线程的请求的能力。

+0

'SendMessage'接受HWND,所以它不适用于(纯)控制台应用程序。你可以使用'PostThreadMessage',但你必须自己处理等待 - 'PostThreadMessage'是一个同步。 – eran

+0

@eran,谢谢Alex和eran的回复。 –