首页 > 解决方案 > 在 C# 中指定用于任务的线程

问题描述

我有一个应用程序,其中有一个传入数据流。当每个数据包到达时,我想在特定线程上处理它以避免同步问题。如何创建一个线程来运行特定操作,然后使用每个传入数据包的给定参数启动它?有没有更好的方法来解决这个问题?即我目前有这个:

        Task.Run(()=>MainWindow.ChartData(dat[0], vd.airspeed, vd.yaw));

但不是每次都启动一个新线程,而是希望每次调用都发生在同一个线程上。

标签: c#multithreadingtask

解决方案


创建一个创建单个线程并将工作传递给该线程的类。其他班级可以将工作推到这个班级。

这就是所谓的调度员。调度器可以封装一个队列,让一个线程休眠一段时间,获取队列的锁,检查队列中的项目,从队列中获取一些项目,释放队列的锁,处理一些项目,然后回去睡一会儿。

调度程序将有一个方法来获取队列的锁,添加一个工作项并释放队列的锁。此方法将被其他线程调用以发布工作。


推荐阅读