Skip to content

Commit 64c9787

Browse files
committed
优化逻辑,可以加入自定义的集合
1 parent 8786a17 commit 64c9787

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

AsyncWorkerCollection/DoubleBuffer_/DoubleBufferTask.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
#nullable enable
2-
using System;
1+
using System;
32
using System.Collections.Generic;
43
using System.Threading.Tasks;
54

@@ -8,8 +7,7 @@ namespace dotnetCampus.Threading
87
/// <summary>
98
/// 双缓存任务
109
/// </summary>
11-
/// <typeparam name="T"></typeparam>
12-
public class DoubleBufferTask<T>
10+
public class DoubleBufferTask<T, TU> where T : class, ICollection<TU>, new()
1311
{
1412
/// <summary>
1513
/// 创建双缓存任务,执行任务的方法放在 <paramref name="doTask"/> 方法
@@ -19,7 +17,7 @@ public class DoubleBufferTask<T>
1917
/// <para></para>
2018
/// 传入的 List&lt;T&gt; 就是需要执行的任务,请不要将传入的 List&lt;T&gt; 保存到本地字段
2119
/// </param>
22-
public DoubleBufferTask(Func<List<T>, Task> doTask)
20+
public DoubleBufferTask(Func<T, Task> doTask)
2321
{
2422
_doTask = doTask;
2523
}
@@ -28,7 +26,7 @@ public DoubleBufferTask(Func<List<T>, Task> doTask)
2826
/// 加入任务
2927
/// </summary>
3028
/// <param name="t"></param>
31-
public void AddTask(T t)
29+
public void AddTask(TU t)
3230
{
3331
DoubleBuffer.Add(t);
3432

@@ -87,8 +85,8 @@ public Task WaitAllTaskFinish()
8785

8886
private event EventHandler? Finished;
8987

90-
private readonly Func<List<T>, Task> _doTask;
88+
private readonly Func<T, Task> _doTask;
9189

92-
private DoubleBuffer<T> DoubleBuffer { get; } = new DoubleBuffer<T>();
90+
private DoubleBuffer<T, TU> DoubleBuffer { get; } = new DoubleBuffer<T, TU>(new T(), new T());
9391
}
9492
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#nullable enable
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Threading.Tasks;
5+
6+
namespace dotnetCampus.Threading
7+
{
8+
/// <summary>
9+
/// 双缓存任务
10+
/// </summary>
11+
/// <typeparam name="T"></typeparam>
12+
public class DoubleBufferTask<T>: DoubleBufferTask<List<T>,T>
13+
{
14+
/// <summary>
15+
/// 创建双缓存任务,执行任务的方法放在 <paramref name="doTask"/> 方法
16+
/// </summary>
17+
/// <param name="doTask"></param>
18+
public DoubleBufferTask(Func<List<T>, Task> doTask) : base(doTask)
19+
{
20+
}
21+
}
22+
}

0 commit comments

Comments
 (0)