gpt4 book ai didi

c++ - 将 CStringArray 传递给线程

转载 作者:行者123 更新时间:2023-11-28 07:19:14 25 4
gpt4 key购买 nike

我有一个对话框,它以 CStringArray 的形式从列表框中返回多项选择的结果,我将返回的结果传递给线程以处理文件。我像这样在线程中引用数组:

CStringArray* m_CStringArray = (CStringArray*)pParam;

我访问元素为:

m_CStringArray->GetAt(1);

但是我得到一个空元素。如果我使用计数。

INT_PTR total_count = m_CStringArray->GetCount();

它确实会向传入的数组返回正确的计数。访问传递给线程的 CStringArray 元素的正确方法是什么?

最佳答案

听起来您遇到了未定义的行为。您可能犯的一个错误是在启动新线程时使用本地 CStringArray,但忘记了本地拷贝可能会在新线程获得处理器时间之前超出范围。

解决此问题的最简单方法是在堆上分配 CStringArray(使用 new)并让线程处理它。

if(m_ProcessDlg.DoModal() == IDOK)
{
CStringArray *arr = new CStringArray;
arr->Copy( m_ProcessDlg.m_ProcessArray );
CWinThread *pThread = AfxBeginThread( ExtractThread, (LPPARAM)arr );
}

关于c++ - 将 CStringArray 传递给线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com