我有一个使用C#处理“大量”记录(可能> 100,000条)的需求。顺序运行此进程非常缓慢,每个记录需要约一秒钟才能完成(设置了5秒的超时错误)。
我想尝试通过使用一组工人“线程”异步运行这些任务(在此谨慎使用术语“线程”,因为我不确定是否应该查看线程、任务或其他内容)。
我已经查看了ThreadPool
,但我无法想象它能够排队需要的请求量。我的理想伪代码将如下所示...
public void ProcessRecords() {
SetMaxNumberOfThreads(20);
MyRecord rec;
while ((rec = GetNextRecord()) != null) {
var task = WaitForNextAvailableThreadFromPool(ProcessRecord(rec));
task.Start()
}
}
我还需要一个机制,使处理方法能够向父/调用类报告。
有人可以给我指点方向,提供一些示例代码吗?