还装有.英雄库运行在控制台应用程序和冻结windows窗体

本文关键字:应用程序 冻结 windows 窗体 控制台 英雄 运行 | 更新日期: 2023-09-27 17:49:22

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

这一行创建了与相机的连接,并发送了一个命令:

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

还装有.英雄库运行在控制台应用程序和冻结windows窗体

你可以从另一个线程调用你的命令或简单地设置HttpRequestMode同步

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

描述:

CommandRequest在内部使用Task,当我们使用像Create这样的阻塞方法而不是CreateAsync时,它调用Task。等待方法导致死锁在UI上下文(使用相同的上下文作为UI线程),通过设置Configuration.CommandRequestMode为Sync,它使用一个替代方法SendRequestSynchronous防止死锁。