簡體   English   中英

如何GC(刪除)GetOpenFileName的線程

[英]How to GC (remove) threads of GetOpenFileName

我注意到當我使用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)) {
    ...
}

你無法對這些線程做些什么。 該對話框確實創建了一些由操作系統本身管理的工作線程,並且還可能安裝了第三方資源管理器插件,這些插件也可以通過對話框使用資源管理器間接加載,並創建自己的線程。 只要對話框沒有崩潰您的代碼,只需忽略額外的線程。 它們是與您的應用無關的操作系統層線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM