清理c#应用程序出口上的非托管c ++线程

时间:2011-05-09 01:34:27

标签: c# c++ multithreading

这是我的设置:
1)c#应用程序启动并调用导出的非托管c ++ dll函数
2)dll函数通过win32 CreateThread生成一个线程 3)这个新线程在while循环中“工作”,检查退出标志

当我退出c#应用程序时,线程立即退出
问题:
1)在退出之前,我可以做些什么来让我的线程清理?
非常感谢 - 我是c#世界的新手,但对c ++有经验

1 个答案:

答案 0 :(得分:2)

当您的C#应用​​退出时:

  1. 设置线程可见的标记。
  2. 致电WaitForSingleObject返回的HANDLE上的CreateThread。这将使它等待线程退出。
  3. 可选择成为一名优秀的公民,并在帖子CloseHandle上调用HANDLE以释放其资源,但如果应用即将退出则无关紧要。
  4. 定期检查线程内的此标志,看它是否应退出循环。