插图:
ParameterizedThreadStart^ pReceiveProc = gcnew ParameterizedThreadStart(this, &ActualClass::Receive);
Thread^ pReceiveThread = gcnew Thread(pReceiveProc);
pReceiveThread->Start(this); // passed the current instance
线程方法:
void Receive(Object^ pObj) {
ActualClass^ l_Cls = dynamic_cast<ActualClass^>(pObj);
l_Cls->MyLinkList->AddLast("test");
Console::WriteLine("{0}", l_Cls->MyLinkList->Count); //outputs 1
}
但如果我从主线程访问MyLinkList:
void MethodMainThread(){
Console::WriteLine("{0}", MyLinkList->Count); //outputs 0
}
静态成员解决方案不是一种选择。
答案 0 :(得分:1)
最可能的是,你的辅助线程被抢占,你的主线程检查计数,然后辅助线程添加一个对象,尝试使用信令,让主线程等待,直到辅助线程完成其操作。
答案 1 :(得分:0)
您不能像这样在线程之间共享数据。一个简单的方法是使用'lock'语句。这很简单,here's是一个很好的解释。