GoPro.Hero库在控制台应用程序上运行并冻结窗体。

4
我正在尝试控制GoPro Hero 3相机。我在互联网上找到了一个库:https://github.com/r1pper/GoPro.Hero ,从我所读的内容来看,这是一个很好的库。但是当我尝试与相机建立连接时,我的完整Windows窗体应用程序会冻结,而我的控制台应用程序(用于测试)只会建立连接。我认为这与异步任务有关,我做错了什么?
该行代码用于创建与相机的连接并发送命令:
var camera = Camera.Create<Hero3Camera>("10.5.5.9");

你在哪个类中进行这个操作?也许从GUI线程启动摄像头会导致这个问题。尝试在另一个线程上执行此操作。 - Mehraban
1
谢谢,这解决了问题。我必须将所有命令放在一个新线程中。 - jfamvg
1个回答

5

您可以从另一个线程调用命令,或者将HttpRequestMode设置为同步。

GoPro.Hero.Configuration.CommandRequestMode = GoPro.Hero.Configuration.HttpRequestMode.Sync

描述:

CommandRequest 内部使用任务(Tasks),当我们使用阻塞方法如 Create 而不是 CreateAsync 时,它在该方法中调用 Task.Wait 导致 UI 上下文死锁(使用与 UI 线程相同的上下文),通过将 Configuration.CommandRequestMode 设置为 Sync,它使用另一种方法 SendRequestSynchronous 防止死锁。


希望能看到更多关于为什么这个修复可以解决问题的描述。 - Gusdor
@Gusdor 给我的回答添加了一些描述。 - user3473830
哇,那太可怕了! - Gusdor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接