首页 > 解决方案 > 在 c# 的解决方案中使用线程进行 IO

问题描述

我目前正忙于编写一些 c# 代码来与 Arduino 交互。该代码定期对音频进行采样并传输数据以物理表示音频电平。我已经为这个程序创建了一个 WPF 界面,但我在最后的步骤中几乎处于死胡同。在我的界面中,我希望能够更改正在传输的参数以及显示从 COM 端口读取的反馈。

我不太了解如何在 c# 中正确创建线程 - 我可以想象您将如何在这里创建一个单独的进程来管理 IO,因为 COM 端口只能由一个简单的进程操作。我将如何同时运行一个循环来采样我的音频并发送它以及另一个循环来读取串行端口,同时仍然与 WPF 进程保持分离,因此 UI 不会冻结。

任何有关正确实践以安全有效地创建这些线程的提示也非常感谢!

谢谢

标签: c#.netmultithreadingarduino

解决方案


最简单的模型是使用几个单独的线程。每个线程都运行在一个无限循环中,该无限循环定义在一个称为 TreadProc 的方法中,因此每个线程就像一个单独的程序,但它运行在同一个进程中,并且可以直接与 UI 交互。

这些后台线程可以通过 UI 元素的调度程序与 WPF UI 交互。请参阅线程模型 - WPF


推荐阅读