基本的に、別のスレッドで Canon EOS SDK から EdsDownloadEvfImage を実行しようとすると問題が発生します。その後、プログラムは...予期しないこと、フリーズなどを行います。
基本的に、メイン スレッドからミューテックスをロックしようとすると、ワーカー スレッドが EdsDownloadEvfImage でフリーズします。
スレッドで EdsOpenSession、EdsCreateMemoryStream などを実行することは絶対的なキラーであることがわかりましたが、それは気にしません。本当に時間のかかる操作は、そのイメージのダウンロードだけです。
ドキュメントに基づいて、ワーカースレッドに
CoInitializeEx( NULL, COINIT_APARTMENTTHREADED )
ダウンロードの前に呼び出されます。私もそれなしで試してみましたが、違いはありませんでした。この関数の実行に何か問題があるのでしょうか?
それとも、ワーカー スレッドで EDSDK 全体を実行する代替手段がありますか? (initializeSDKなどで)
返信ありがとうございます。
ところで: Qt アプリケーションで SDK を使用しています。