многопоточность — C ++ Передача структуры в функцию между потоками

У меня странная проблема. У меня есть ниже структура и метод, который использует структуру.

struct AsyncData {
string documentNo;
string command;
string filePath;
};
UINT AsyncDownloader(LPVOID pData) {
AsyncData* ad = static_cast<AsyncData*>(pData);
string cmd = ad->command;
string path = ad->filePath;
HRESULT hr = URLDownloadToFile(NULL, cmd, path, 0, NULL );
if(SUCCEEDED(hr))
{
delete ad;
return 0;
}
else
{
string val = ad->documentNo;
return 1;
}
}

Вызов поступает из другого метода:

callerMethod()
{
AsyncData* ad;
ad = new (AsyncData);
ad->filePath = filePath;
ad->command = command;
ad->documentNo = m_Target->SelectedDocNoList.GetString(i);
AfxBeginThread(AsyncDownloader, (LPVOID)ad);
}

Проблема в:

Когда AsyncDownloader метод вызывается, адрес отправленной и полученной структуры совпадает. Но доступ к членам дает NULL ценности.

Любое понимание того, что я делаю не так?

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …