我一直在尝试修复/找到一个小时左右的解决方案。 基本上我有:
CCriticalSection pCS;
在类声明中,然后我使用像这样的CSingleLock:
CSingleLock pSL(&pCS);
pSL.Lock();
*Stuff happening here*
pSL.Unlock();
锁定和解锁pCS。但是初始化CriticalSection似乎总是在这里:
c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxmt.h(82): error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'
c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(535) : see declaration of 'CObject::operator ='
c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(509) : see declaration of 'CObject'
This diagnostic occurred in the compiler generated function 'CSyncObject &CSyncObject::operator =(const CSyncObject &)'
我在程序中有4个工作线程,我向它们发送指向CCriticalSection所在类的指针,并且线程正在处理CCriticalSection,以及主线程。线程使用类的指针来使用使用CCriticalSection的CSingleLock。
为了您的信息,该代码还包括Direct2D但不应该是相关的。
一些帮助将不胜感激。
编辑:
刚尝试用以下方式制作新项目:
#include <afxmt.h>
在里面。它给了我例外。这是正常的吗?我使用的是VC ++ 2010 Professional。
解决:
还有一个CEvent在那里,所以我想我也把它变成了一个指针,你知道吗。它解决了这个问题。现在有一个afxmt.h文件给我例外。
答案 0 :(得分:0)
如果你想在CRITICAL_SECTION上同步多个线程,你可以共享一个指向同一个关键部分的指针,但你实际上无法复制CRITICAL_SECTION。
答案 1 :(得分:0)
还有一个CEvent在那里,所以我想我也会把它变成一个指针,而且你知道whaddya。它解决了这个问题。现在有一个afxmt.h文件给我例外。