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

Best way to communicate with a device without freezing GUI

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

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

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

编辑: 通信是使用 "ActiveDSO" 完成的,这是 Lecroy Oscilloscopes 使用的一种特殊方式(实际是使用以太网完成的,但我只调用了他们第 3 方库的函数)。 实际上更改为 .Net 4.5 + 使用 asyc/await 解决了我的问题,谢谢。

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

Async 和 Await 可以帮助您解决问题。 https://msdn.microsoft.com/en-us/library/hh191443(v=vs.110)#BKMK_WhentoUseAsynchrony

举个例子https://www.dotnetperls.com/async