【发布时间】:2020-10-24 04:32:17
【问题描述】:
我有一个需要初始化成像 API 的静态对象。此成像API分配的资源需要由同一个线程释放。
所以我在我的静态对象中启动一个线程来初始化所有东西,然后等待计数器达到零。发生这种情况时,线程会清理所有内容并完成。
这是托管库中的非托管类,因此我不能使用 System::Threading::Thread(需要托管静态成员函数)或 std::thread(编译器错误,/clr 不支持)。
所以我必须像这样开始我的线程:
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&Initialize, this, 0, 0);
一切正常,初始化完成,API 函数正常工作。但是当我关闭应用程序时,我看到我的静态对象的使用计数器达到零,但线程从未调用清理函数,就好像线程被杀死一样。有没有办法确保线程将继续存在并执行到结束?
【问题讨论】:
标签: dll c++14 clr unmanaged managed