调用STL向量&x27;s在一个新的托管线程中,通过C在混合模式程序集中向后推#u 我正在编写一个WPF应用程序,它在本地C++中运行其核心魔术,在混合模式程序集中被C++/CLI类巧妙地包装。

调用STL向量&x27;s在一个新的托管线程中,通过C在混合模式程序集中向后推#u 我正在编写一个WPF应用程序,它在本地C++中运行其核心魔术,在混合模式程序集中被C++/CLI类巧妙地包装。,c++,multithreading,vector,stl,c++-cli,C++,Multithreading,Vector,Stl,C++ Cli,在C++/CLI包装类的方法中,我创建了一个向量的新实例,并返回了一个值: void Wrapper::CallVectorPushBack() { vector<int> foo; foo.push_back(1); } 当为执行上述代码创建新线程时,vector实例上的第一个push_back调用将锁定该线程。新线程被卡住,Visual Studio在“线程”窗口中将_MtxLock显示为地址 运行代码需要什么 提前谢谢你 干杯 我找到了问题: C++/CLI包

在C++/CLI包装类的方法中,我创建了一个向量的新实例,并返回了一个值:

void Wrapper::CallVectorPushBack()
{
    vector<int> foo;
    foo.push_back(1);
}
当为执行上述代码创建新线程时,vector实例上的第一个push_back调用将锁定该线程。新线程被卡住,Visual Studio在“线程”窗口中将_MtxLock显示为地址

运行代码需要什么

提前谢谢你


干杯

我找到了问题:


C++/CLI包装DLL实现了一个DllMain方法,该方法使用CRegistry库()读取注册表项。读取try-catch块中不存在的注册表项会增加上述应用程序的线程功能…

我怀疑这是原因,因为“foo”只是一个局部变量。
Task.Factory.StartNew(() => { Wrapper.CallVectorPushBack(); });