【发布时间】:2012-10-14 06:29:22
【问题描述】:
如何将数据从主应用程序传递到线程?
在主应用程序中,我创建了一个线程来处理错误消息。在主应用程序中处理数据时,如果出现错误,它会生成错误消息并将其填充到结构中。此错误消息(结构)需要传递给线程,然后线程将进一步处理它,主应用程序应继续其工作。我正在尝试在 Windows 平台上的 C 中执行此操作。
我的应用程序中只会运行一个线程。目前我已经定义了一个全局变量结构(myData),我正在使用 PostThreadMessage 传递它。
struct myData errorData;
从主应用程序使用
发布消息PostThreadMessage(ErrorLogId, THRD_MESSAGE_EXIT , 0 , (LPARAM)&errorData);
在我有的线程中
MsgReturn = GetMessage(&msg, NULL, THRD_MESSAGE_SOMEWORK, THRD_MESSAGE_EXIT);
目前它工作正常。但如果处理错误消息需要更多时间,届时主应用程序可能会收到新的错误并更新全局结构 errorData 中的数据。
我可以使用锁定机制,但在线程完成处理之前我无法停止主应用程序。如何在不将数据作为全局变量的情况下传递数据?
【问题讨论】:
标签: c winapi message-queue