从工作线程访问MFC控件的最佳方法是什么?
访问控件的MFC惯用方法是什么?
我在这里阅读http://www.flounder.com/workerthreads.htm以下方法,但我不太喜欢new
的{{1}},我怎样才能确保CString
正确CString
{ {1}}?
deleted
答案 0 :(得分:0)
使用PostMessage(..)是正确的。考虑使用SendMessage(..) - 直到完成为止。 将指针传递给新对象很常见 - 检查PostMessage(..)的返回值以检查它是否已发布。
如何确保CString被正确删除?
如上所述,检查PostMessage(..)的返回值,并在退出消息循环时处理整个消息队列。
答案 1 :(得分:0)
作为一般规则,只能从创建它们的线程访问MFC控件。这就是您找到的样本经过传递消息的额外步骤的原因。消息由创建控件的线程接收和处理。
在OnUpdateResults()中正确删除了CString。
答案 2 :(得分:0)
除了@ Simon的答案之外,如果你有一个更复杂的场景,更难以确定谁应该删除CString(或任何类型),请考虑std :: tr1 :: shared_ptr。它将负责删除。