【发布时间】:2017-06-02 19:31:39
【问题描述】:
我是 C# 新手,现在需要构建一个 GUI 来控制具有多个设备的测试系统。我为每个设备创建了一个类库 (dll)。现在我想使用方法向他们发送一些命令。
但部分通信可能需要一些时间,例如从示波器获取原始数据或使用计时器检查其连接状态。这会导致 GUI 冻结。
所以现在我想知道将这种通信外包给不同线程的最佳方式是什么?所有通信都是独立的,我可以并行完成大部分通信。所以我基本上在寻找一种方法,例如在不同的工作人员中创建一个完整的类,调用一个方法并让它以事件的形式回答。
编辑: 通信是使用“ActiveDSO”完成的,这是 Lecroy Oscilloscopes 使用的一种特殊方式(实际是使用以太网完成的,但我只调用他们的第 3 方库的函数)。 实际上使用 asyc/await 更改为 .Net 4.5 + 解决了我的问题,谢谢。
【问题讨论】:
-
所以,您已经发现您需要多个线程。你到底在这里问什么?如何在 C# 中进行线程编程?
-
你知道你需要一个不同的线程,所以只需查找 C# 的线程处理方法。例如任务并行库:TPL
-
你需要描述这个“交流”;是通过 USB 吗?互联网?如果它在 I/O 上被阻塞,启动另一个线程只会阻塞你的新线程。在这种情况下调查async/await。
标签: c# multithreading user-interface communication