我已经构建了一个小型摄像头捕获守护程序,它使用Canon的EDSDK和Wayne Hartman's C# wrapper从连接的DSLR捕获一系列图像。
当我从表单本身的测试按钮单击处理程序调用{{1}}时,捕获工作非常可靠。但是,当我尝试从takePhotograph()
调用takePhotograph()
时,它非常不可靠并经常导致应用停止响应。跟踪调用堆栈后,看起来整个调用顺序混乱,最终导致EDSDK在提前调用socketServer_MessageReceived()
时(在捕获所有图像之前)挂断。
我来自非多线程环境(Flex / ActionScript),并且有预感我只是在处理与我的处理程序有关的一些错误。
以下是我的代码的要点:
EdsDownload()
答案 0 :(得分:1)
您是否尝试使用takePhotograph
(Form.Invoke
)包裹this.Invoke
?如果它可以从GUI工作,那么当你为呼叫强制使用正确的线程时它也可以工作。