У меня есть vtkDICOMReader в приложении VC ++ / MF C, в основном потоке. Поскольку получение данных в этом объекте может занять много времени, я хотел бы получить данные, скажем, с жесткого диска, в отдельный поток. Во втором потоке я создаю еще один объект vtkDICOMReader . И этот vtkDICOMReader должен быть переведен в vtkDICOMReader из основного потока ... как это сделать?
Вид псевдокода:
CMyDoc::m_pDICOMReader;
во втором потоке я создаю локальный vtkDICOMReader с
vtkDICOMReader* pReader = vtkDICOMReader::New();
pReader->ReadData(...); // could take long time
::PostMessage(AfxGetMainWnd()->GetSafeHwnd(), WMU_TRANSFER, 0, (LPARAM)pReader);
В основном потоке:
LRESULT CMyDoc::OnTransfer(WPARAM wParam, LPARAM lParam)
{
vtkDICOMReader* pReader = (vtkDICOMReader*)lParam;
// transfer pReader to m_pDICOMReader somehow ...
m_pDICOMReader = pReader; // <-- this is the point where I don't know how to transfer data from pReader to m_pDICOMReader
pReader->Delete();
}
Или, чтобы избежать этой передачи, из отдельного потока vtkImageData в основной поток vtkImageData можно ли загрузить данные непосредственно в основной поток vtkImageData таким образом, чтобы я мог отменить чтение входных данных? Если возможно, как я могу это сделать?