在不冻结GUI的情况下与设备通信的最佳方式

时间:2017-06-02 19:31:39

标签: c# multithreading user-interface communication

我是c#的新手,现在需要构建一个GUI来控制具有多个设备的测试系统。我为每个设备创建了一个类库(dll)。现在我想使用方法向它们发送一些命令。

但部分通信可能需要一些时间,例如从示波器获取原始数据或使用定时器检查其连接状态。这导致GUI冻结。

所以现在我想知道将这种通信外包给另一个线程的最佳方法是什么?所有通信都是独立的,我可以并行完成大部分通信。所以我基本上寻找的是一种方法,例如在不同的工作者中创建一个完整的类,调用一个方法并让它以事件的形式回答。

编辑: 使用" ActiveDSO"进行通信,这是Lecroy示波器使用的一种特殊方式(实际的事情是使用以太网完成但我只调用他们的第三方库的功能)。 实际上使用asyc / await更改为.Net 4.5 +解决了我的问题,谢谢。

2 个答案:

答案 0 :(得分:0)

使用asyncawait个关键字:https://docs.microsoft.com/en-us/dotnet/csharp/async

答案 1 :(得分:0)