如何GC(删除)GetOpenFileName的线程

时间:2013-07-29 22:53:30

标签: c++ winapi garbage-collection mingw

我注意到当我使用函数GetOpenFileName时,在我的应用程序中分配了很多线程。关闭对话框并返回函数后,如何删除它们?我在这些线程中也遇到SIGSEGV错误,这些错误不会导致我的应用程序崩溃但仍然很烦人,因为它们无处可能会导致严重的内存问题,并且win32 api不应该像这样有缺陷,如果它?我做错了吗?

我也是c / c ++的初学者,所以请不要对我太过刻意。

我的代码:

OPENFILENAME open;
ZeroMemory(&open, sizeof(open));
char szFileName[2048] = {};

open.lStructSize = sizeof(OPENFILENAME);
open.hwndOwner = NULL;
open.lpstrFilter = "Képek\0*.jpg;*.jpeg;*.gif;*.png;*.bmp\0\0";
open.lpstrFile = szFileName;
open.nFileOffset = 1;
open.nMaxFile = 2048;
open.lpstrTitle = "Képek kiválasztása..";
open.Flags = OFN_EXPLORER | OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST;

std::string links = "";
if (GetOpenFileName(&open)) {
    ...
}

1 个答案:

答案 0 :(得分:2)

关于这些线程你无能为力。该对话框确实创建了一些由操作系统本身管理的工作线程,并且还可能安装了第三方资源管理器插件,这些插件也可以通过对话框使用资源管理器间接加载,并创建自己的线程。只要对话框没有崩溃您的代码,只需忽略额外的线程。它们是与您的应用无关的操作系统层线程。