我有一个旧的 ATL/MFC 应用程序,它有两个线程,主窗口线程和渲染线程。我的问题是我有与 CSimpleString 相关的随机访问冲突错误;即访问冲突,0xdddddddd 等...
我推断问题是两个线程同时访问同一个字符串,一个尝试使用它来渲染(MFC 主窗口线程),一个尝试更新字符串(渲染线程)。
从 MFC 方面;班级是
class CDisplay : public CStatic
{
public:
CString m_strDisplay;
...
void SetDisplay(CString str, int nMode = -1);
...
}
没有绘画覆盖,文本基本上是通过 CStatic 呈现的。
现在,SetDisplay 方法是从 Render-Thread 调用的;它的主要代码是:
if (m_strDisplay != str)
{
m_strDisplay = str;
SetWindowText(str + " ");
}
我的问题是我需要一个关键部分;但我不知道如何让 MFC 方面坚持下去。
任何人都有使 MFC 线程安全并避免这些问题的智慧吗?