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

本文关键字:C++ 线程 应用程序 出口 清理 | 更新日期: 2023-09-27 17:55:20

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

当我退出 c# 应用程序时,线程会立即退出。

问题:
1) 我可以做些什么来让我的线程在退出之前清理?

非常感谢 - 我是 c# 世界的新手,但对 c++ 有经验

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

当 C# 应用退出时:

  1. 设置对线程可见的标志。
  2. CreateThread返回的HANDLE上拨打WaitForSingleObject。 这将使它等待线程退出。
  3. (可选)成为一个好公民,并在线程的HANDLE上调用CloseHandle以释放其资源,尽管如果应用即将退出,这并不重要。
  4. 定期检查线程中的此标志,以查看它是否应退出循环。