我是c#的新手,现在需要构建一个GUI来控制具有多个设备的测试系统。我为每个设备创建了一个类库(dll)。现在我想使用方法向它们发送一些命令。
但部分通信可能需要一些时间,例如从示波器获取原始数据或使用定时器检查其连接状态。这导致GUI冻结。
所以现在我想知道将这种通信外包给另一个线程的最佳方法是什么?所有通信都是独立的,我可以并行完成大部分通信。所以我基本上寻找的是一种方法,例如在不同的工作者中创建一个完整的类,调用一个方法并让它以事件的形式回答。
编辑: 使用" ActiveDSO"进行通信,这是Lecroy示波器使用的一种特殊方式(实际的事情是使用以太网完成但我只调用他们的第三方库的功能)。 实际上使用asyc / await更改为.Net 4.5 +解决了我的问题,谢谢。
答案 0 :(得分:0)
使用async
和await
个关键字:https://docs.microsoft.com/en-us/dotnet/csharp/async
答案 1 :(得分:0)
Async和Await可以帮助您解决问题。 https://msdn.microsoft.com/en-us/library/hh191443(v=vs.110)#BKMK_WhentoUseAsynchrony
的示例