.net 将TPL用于文件下载计划程序并处理每个文件
我当前的项目使用.NET2.0线程,并且有一个主线程用于调度1.File下载线程和2。文件处理线程。我可以限制并行处理的最大线程数,比如16个(对于已经下载的文件,可能是10个文件下载和6个文件处理)。我想使用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
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”您能解释一下这到底是什么意思吗?