Скопируйте vtkImageData в другой vtkImageData - PullRequest
0 голосов
/ 15 марта 2020

У меня есть 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 таким образом, чтобы я мог отменить чтение входных данных? Если возможно, как я могу это сделать?

...