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

时间:2014-03-11 08:08:57

标签: c# gopro

我正在尝试控制GoPro Hero 3相机。我在互联网上找到了一个图书馆:https://github.com/r1pper/GoPro.Hero从我读到的它是一个很好的图书馆。但是,当我尝试与相机创建连接时,我的完整Windows窗体应用程序冻结,我的控制台应用程序(用于测试)只是建立连接。 我认为它与异步任务有关,我做错了什么?

此行创建与摄像机的连接并发送命令:

var camera = Camera.Create<Hero3Camera>("10.5.5.9");

1 个答案:

答案 0 :(得分:5)

您可以从其他线程调用命令,也可以只将HttpRequestMode设置为同步

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

说明

CommandRequest在内部使用任务,当我们使用Create而非CreateAsync之类的阻止方法时,它会在导致死锁的方法中调用 Task.Wait UI上下文(使用与UI线程相同的上下文),通过将Configuration.CommandRequestMode设置为Sync,它使用替代方法 SendRequestSynchronous 来防止死锁。