所以基本上,当我试图在一个单独的线程上从Canon EOS SDK运行EdsDownloadEvfImage时,我遇到了问题。然后程序就会...意想不到的事情、冻结的东西等。
基本上,它所做的是当尝试从主线程锁定互斥时,工作线程冻结在EdsDownloadEvfImage上,这对我来说简直是令人兴奋。
我发现在线程上执行EdsOpenSession、EdsCreateMemoryStream等绝对是杀手级的,但这并不重要,唯一真正耗时的操作就是图像下载。
基于文档记录,我已经确保工作线程具有
CoInitializeEx( NULL, COINIT_APARTMENTTHREADED )在下载之前调用。我也尝试过不使用它,它没有任何区别。也许在执行这个函数时会有一些问题?
或者,一个可行的替代方案是在工作线程上运行整个EDSDK吗?(使用initializeSDK等)
感谢您的回复。
顺便说一句,我正在Qt应用程序中使用SDK。
发布于 2016-06-03 22:01:48
问题解决了,我只是把所有的东西都放在一个单独的线程上,现在它工作得很好。
https://stackoverflow.com/questions/37614680
复制相似问题