如何在c#中为这个程序设计线程?

本文关键字:程序设计 线程 | 更新日期: 2023-09-27 18:16:34

我正在创建一个程序,它将执行用户预定义的任务数量,例如100个。

每个任务都将发送到一个服务器,获取响应,对另一个服务器进行调用,然后使用该响应对前一个服务器进行另一次调用。

我希望应用程序是多线程的,所以当用户按下一个按钮时,它将启动,比如说,10个线程,它们将继续运行。

一旦任务完成,完成该任务的线程将从列表中抓取另一个任务,直到没有剩余为止,在这种情况下,线程将终止并且会发生一些事情来提醒用户任务已经完成。

以前当我尝试类似的东西时,我以逃避告终,我基本上每N秒左右启动10个线程,并祈祷之前的线程已经结束了。

我的问题是,我如何制作一些线程,以某种方式存储它们,并在它们完成时向它们添加任务?有人建议我可以将线程引用添加到列表中,然后检查哪些线程在休眠并强迫它们做一些事情,但我不确定如何做到这一点,尽管大多数情况下我不确定解决这个问题的整体正确方法。

谢谢!

如何在c#中为这个程序设计线程?

首先,确保你真正理解。net中的线程。我发现这是一个非常好的c#线程资源。

同样,表中的新特性是。net 4中的数据并行性。你可以在这里阅读更多信息

数据并行性将使您的情况变得简单(Parallel.ForEach),但我真的建议您阅读书籍并学习基础知识。但是,如果无知是福,那么MS和Data Parallelism是为你准备的。

如果你没有访问。net 4和数据并行,那么我需要一个任务队列(queue (of T)类),一些锁为你的线程访问它安全(锁定),后台线程(ThreadPool类),和某种形式的信号(信号与等待和脉冲)。

奖金。要限制/控制线程在给定时间的工作,您可能还需要检查Semaphore。

听起来你想要的是任务并行库。本质上,它有助于并发地运行任务,而不必自己管理线程。尽管如此,您仍然需要了解多线程代码的基础知识,以便能够以支持并行运行任务的方式构建程序。