我有一个字符串列表,我需要执行一些操作。下面是一段完美无缺的简单代码。
我想加快“ProcessList()”方法的执行速度,我的理解是我可以实现一些并行处理,以便并行处理字符串而不是串行处理。
我已经做了一些搜索,但我对这个并行处理的东西相当新,所以我甚至不确定究竟要搜索什么。一个简单的代码示例或链接到一个非常相似的例子将非常有用。
注意:我正在使用.NET 3.5,因此“System.Threading.Tasks”库不可用。如果可能的话,我希望能够在不下载额外库的情况下使用.NET 3.5开箱即用。
using System.Collections.Generic;
using System;
class Program
{
static void Main(string[] args)
{
// get a list of strings
var list = new List<string>() { "item1", "item2", "item3", "item4" };
// process the list
var resultList = ProcessList(list);
// print out the results of the list
resultList.ForEach(x => Console.WriteLine(x));
Console.ReadLine();
}
private static List<string> ProcessList(List<string> list)
{
// create list to return
var resultList = new List<string>();
// loop through each string in the list and call the "ProcessString()" method for each one
list.ForEach(x => resultList.Add(ProcessString(x)));
// return list of processed strings
return resultList;
}
private static string ProcessString(string input)
{
// do something here
return input.ToUpper();
}
}
答案 0 :(得分:0)
您可以开始阅读以创建自己的处理字符串实现的几个示例:
A Simple Parallel.ForEach Implementation in .NET 3.5
Parallel ForEach Loops in C# 3.5
Optimized Parallel ForEach .NET 3.5
但如果使用外部库是可行的,那么我建议使用Task Parallel Library already available from NuGet
Parallel.ForEach()
它提供了管理MaxDegreeOfParallelism
和Scheduler
选项的方法,如果您创建自己的实现,则必须由您自己管理。