我可以在这里听取社区的意见吗?我有一个应用程序,其中有多个线程访问(this)类的成员,该类调用了线程本身。问题是,当新线程在 LinkedList 成员中添加元素时,我可以看到 LinkedList 的计数由于添加元素而增加到 1,但是在主线程中,新线程所做的更改并未反映. 我什至将当前对象的引用传递给 ParameterizedThreadStart,但它仍然无法正常工作。
插图:
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
}
静态成员解决方案不是一种选择。