gpt4 book ai didi

c++ - MFC中工作线程的使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:20 24 4
gpt4 key购买 nike

//Case I : ( It works but not sure if it is safe . Is it because the windows
messages are handle in a process queue already? )
void MyDlg::OnClickButton1()
{
std::thread([]()
{
// some long computation here

SetDlgItemText(IDC_STATIC_TEXT, L"Updated");
}).detach();
}



//Case II : ( It works . But is the process_queue redundant )
void MyDlg::OnClickButton1()
{
std::thread([]()
{
// some long computation here

command_node node =
command_factory("SetDlgItemText",IDC_STATIC_TEXT, "Updated");

SendMessageToMyProcessQueue(node);
}).detach();
}
void MyDlg::OnPaint()
{
ExecuteFromMyProcessQueue();
CDialogEx::OnPaint();
}

这是一个使用 MFC 的 VC++ 示例片段,我想使用工作线程来完成任务并将结果发送到控件。哪个是可取的或任何其他解决方法?

最佳答案

避免从主线程以外的其他线程直接访问 GUI 通常是一个好主意(或要求)。 MFC 可能断言也可能不断言,这取决于它的实现方式的一致性。另见 this answer .这样就排除了您的第一种情况。

使用消息队列是安全和正确的方法。另见 this thread关于如何从另一个线程更新 UI。

关于c++ - MFC中工作线程的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39159995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com