C# 并发 - 长时间运行任务的首选方法

标签 c# multithreading asynchronous .net-4.5 async-await

当需要在整个应用程序生命周期中运行 I/O 监听器时,在 4.5 框架上运行的 C# 5.0 首选哪种并发模型?

我已经确定生产者-消费者模式最适合处理我收到的内容,但应该支持什么样的基础架构?

会建议一个简单的 Thread thread = new Thread(ThreadStart(method)) 吗?还是首选 TaskAsync/Await 模型?

这是一个有点急功近利的问题,但由于我处于设计的早期阶段,所以我更愿意确保基础牢固。我对其他语言的直觉 react 是,在后台运行一个简单的线程是最好的,但 C# 中过多的并行框架让我偏离了正轨。

如果有任何相关性,我的应用程序中的轮询时间将由 I/O 读取超时处理。

更新:

我指的 I/O 是一个 FTDI 设备,其中的字节可能随时被设备推送到 PC,这取决于板载 Controller 的状态。因此,我总是需要准备好获取数据并进行处理。我使用的 API 基于 FTDI 供应商提供的 D2XX DLL。

最佳答案

如果我正确解释了您的“I/O 监听器”,那么您应该始终进行连续的异步读取操作。不需要线程。

关于C# 并发 - 长时间运行任务的首选方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886722/

相关文章:

multithreading - Tomcat 多个请求相同的用户,相同的 url(是缓存吗?线程保持事件状态?)

javascript - 已保存的 javascript facebook API 响应仍未定义?

c# - 将对数据网格所做的更改反射(reflect)回数据集和数据表

c# - RestSharp 反序列化问题

c# - MVC 4 将列表从 View 传递到 Controller

javascript - For循环异步

ruby-on-rails - 使用 AJAX 单击 link_to 后如何在同一页面上呈现部分

c# - 如何检测窗口是否闪烁

multithreading - 我可以在 perl 中重用加入的线程吗?

c++ - boost::signals2 的性能