我创建了一个使用动态线程的应用程序,使用下面的函数:在C#中的线程池类管理线程执行
foreach (DataGridViewRow row in dtConexiones.Rows)
{
Object ip = Convert.ToString(row.Cells["ip"].Value);
ThreadPool.QueueUserWorkItem(new WaitCallback(setTimer), ip);
Console.Read();
}
您可能会注意到创建多个线程,基于数量记录在“ip”列中,在Datagridview控件中,我的意思是,我有五条记录,所以我有五个线程。
以相同的方式ThreadPool.QueueUserWorkItem (new WaitCallback (setTimer), ip);
创建线程,并执行SetTimer函数接收作为参数的值IP,它是一个字符串,以创建为每个线程的定时器。
这个过程完美地工作,线程被创建,但是当程序被执行时,线程1被执行一次,然后线程2被无限期地运行。
如何管理由ThreadPool创建的线程,以便它们可以逐个执行,而无需运行线程x?
在下面的执行图中,您可以看到线程192.168.1.123是如何执行两次的,并且从那里开始,线程192.168.1.124被无限期执行,当我希望两者都在par上执行时。问候并感谢您的宝贵帮助。
请不要插入文本图像 - 只需复制并粘贴文本,选中它并键入Ctrl-K以在预先格式化的部分中将其缩进。尽管如此,我不确定这个问题 - 如果你想要主动控制线程,那么你应该考虑使用除了系统ThreadPool以外的其他东西,它用于简单的任务分派。 – Petesh
感谢您的建议,我会用您的观察来编辑此问题。至于使用另一个ThreadPool替代方法,我想知道这个替代方案,因为我只想管理一个接一个执行的动态线程,并且这些线程执行时不会影响其他可以在par上运行的线程。感谢您的回答 –