1 public void TestMethod1()
2 {
3 var strArr = new string[25];
4 var list = new List<string>();
5 for (int i = 0; i < 25; i++)
6 {
7 strArr[i] = i.ToString();
8 }
9 var numb = 10;
10 var integer = strArr.Length / numb;
11 var remainder = strArr.Length % numb;
12 var tNumb = integer == 0 ? integer : integer + 1;
13
14 if (integer <= 0)
15 {
16 //直接执行,不开线程
17 }
18 else
19 {
20
21 Task<List<string>>[] tasks = new Task<List<string>>[tNumb];
22
23 for (int i = 0; i < integer; i++)
24 {
25 var arrs = new string[numb];
26 var p = (i * numb);
27 Array.Copy(strArr, p, arrs, 0, numb);
28 Func<List<string>> fun = ()=> vvvv(arrs);
29 tasks[i] = Task.Factory.StartNew(fun);
30 }
31 if (remainder > 0)
32 {
33 var arrs = new string[remainder];
34 Array.Copy(strArr, integer * numb, arrs, 0, remainder);
35 tasks[tNumb - 1] = Task.Factory.StartNew<List<string>>(() => vvvv(arrs));
36 }
37 var overTask = 0;
38 while (overTask != tasks.Length)
39 {
40 for (int i = 0; i < tasks.Length; i++)
41 {
42 if ((tasks[i] != null) && ((tasks[i].IsCanceled || tasks[i].IsCompleted) || tasks[i].IsFaulted))
43 {
44 list.AddRange(tasks[i].Result);
45 tasks[i].Dispose();
46 tasks[i] = null;
47 overTask++;
48 }
49 }
50 }
51 var www = list.Distinct().ToList();
52 }
53 }
54
55 public List<string> vvvv(string [] arrs )
56 {
57 var lists = new List<string>();
58 for (int e = 0; e < arrs.Length; e++)
59 {
60 lists.Add(arrs[e]);
61 }
62 return (lists);
63 //执行代码。
64 }