c# - 在 c# 的解决方案中使用线程进行 IO
问题描述
我目前正忙于编写一些 c# 代码来与 Arduino 交互。该代码定期对音频进行采样并传输数据以物理表示音频电平。我已经为这个程序创建了一个 WPF 界面,但我在最后的步骤中几乎处于死胡同。在我的界面中,我希望能够更改正在传输的参数以及显示从 COM 端口读取的反馈。
我不太了解如何在 c# 中正确创建线程 - 我可以想象您将如何在这里创建一个单独的进程来管理 IO,因为 COM 端口只能由一个简单的进程操作。我将如何同时运行一个循环来采样我的音频并发送它以及另一个循环来读取串行端口,同时仍然与 WPF 进程保持分离,因此 UI 不会冻结。
任何有关正确实践以安全有效地创建这些线程的提示也非常感谢!
谢谢
解决方案
最简单的模型是使用几个单独的线程。每个线程都运行在一个无限循环中,该无限循环定义在一个称为 TreadProc 的方法中,因此每个线程就像一个单独的程序,但它运行在同一个进程中,并且可以直接与 UI 交互。
这些后台线程可以通过 UI 元素的调度程序与 WPF UI 交互。请参阅线程模型 - WPF
推荐阅读
- sql - 多个日期/ ID 的 Redshift Min Window 函数
- javascript - jQueryUI 可拖动图像在正文元素中使用新行滚动
- firebase - 如何阻止用户写入 Firebase 数据库?在不更改以下所有其他规则的情况下
- java - 如何使用 Java Panama 在本机内存中存储对象数组
- python - 即使我想打印所有文件,也只打印文件夹中第一个文件的内容
- javascript - 在地图功能中渲染 Firebase 数据
- javascript - 我应该为这些任务使用什么模式?
- gpu - Onnxruntime 与 PyTorch
- javascript - 如果在 Angular 中使用 ng-multiselect-dropdown 搜索过滤器未找到搜索项,则显示消息
- sql - 根据输入获取更多 SELECT 数据