.net 将TPL用于文件下载计划程序并处理每个文件

.net 将TPL用于文件下载计划程序并处理每个文件,.net,task-parallel-library,.net,Task Parallel Library,我当前的项目使用.NET2.0线程,并且有一个主线程用于调度1.File下载线程和2。文件处理线程。我可以限制并行处理的最大线程数,比如16个(对于已经下载的文件,可能是10个文件下载和6个文件处理)。我想使用TPL迁移我的代码 Thread workerThread = null; switch (Status) { case StatusEnum.FileWatchLocked: workerThread = new Thread(workflowMgr.GetFil

我当前的项目使用.NET2.0线程,并且有一个主线程用于调度1.File下载线程和2。文件处理线程。我可以限制并行处理的最大线程数,比如16个(对于已经下载的文件,可能是10个文件下载和6个文件处理)。我想使用TPL迁移我的代码

Thread workerThread = null;
switch (Status)
{
    case StatusEnum.FileWatchLocked:
        workerThread = new Thread(workflowMgr.GetFiles);
        break;
    case FPFStatusEnum.ProcessLocked:
        workerThread = new Thread(workflowMgr.ProcessFiles);
        break;
}
lock (_threadCountMonitor)
{
    _workFlowPool.Add(workerThread, workflowMgr);
    _workFlowThreadIDPool.Add(workerThread.ManagedThreadId, workerThread);
    workerThread.Start();
    ++_threadCount;
}

我需要跟踪任务是否已完成,并且我可以将更多的工作排队。我还需要为getfile和processfile实现TPL。TPL的最佳方法是什么?

我认为您的代码可以像下面这样编写。这样,您就不需要手动将工作项排队

foreach (var uri in uris)
{
    string filename = "urixxx"; //get local file name
    Task.Factory.StartNew(() =>
    {
        DownloadFile(uri, filename); 
    }).ContinueWith((t) =>
            {
                ProcessFile(filename);
            });
}

“我需要为getfile和processfile实现TPL”您能解释一下这到底是什么意思吗?