所以基本上我在尝试在单独的线程上从佳能 EOS SDK 运行 EdsDownloadEvfImage 时遇到问题。然后程序会......意想不到的事情,冻结等。
基本上,它的作用是当试图从主线程锁定互斥锁时,工作线程在 EdsDownloadEvfImage 上冻结,这对我来说简直是令人兴奋的。
我发现在线程上执行任何 EdsOpenSession、EdsCreateMemoryStream 等都是绝对的杀手,但这并不介意,唯一真正耗时的操作是图像下载。
根据文档,我确保工作线程具有
CoInitializeEx( NULL, COINIT_APARTMENTTHREADED )
下载前调用。我也试过没有它,它没有任何区别。也许执行这个功能有问题?
或者一个可行的替代方案是在工作线程上运行整个 EDSDK?(带有initializeSDK等)
感谢您的回复。
顺便说一句:我在 Qt 应用程序中使用 SDK。