清理非托管 c++ C# 应用程序退出时的线程
这是我的设置:
1) C# 应用程序启动并调用导出的非托管 C++ DLL 函数
2) dll函数通过win32 CreateThread产生一个线程
3)这个新线程在 while 循环中“工作”,检查退出标志
当我退出 C# 应用程序时,线程立即退出。
问题:
1) 我该怎么做才能让我的线程在退出前清理?
非常感谢 - 我是 C# 世界的新手,但对 C++ 有经验
Here's my setup:
1) c# application starts up and calls an exported unmanaged c++ dll function
2) the dll function spawns a thread via win32 CreateThread
3) this new thread does it's "work" in a while loop, checking for an exit flag
When I exit the c# application, the thread exits immediately.
Questions:
1) What can I do to allow my thread to cleanup before exiting?
Much thanks - I am new to the c# world, but experienced with c++
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您的 C# 应用程序退出时:
CreateThread
返回的HANDLE
调用WaitForSingleObject
。这将使其等待线程退出。HANDLE
上调用CloseHandle
以释放其资源,尽管如果应用程序即将退出,这并不重要。When your C# app exits:
WaitForSingleObject
on theHANDLE
returned byCreateThread
. This will make it wait for the thread to exit.CloseHandle
on the thread'sHANDLE
to free its resources, though this doesn't really matter if the app is about to exit.