Skip to content

Commit 59bc033

Browse files
committed
支持等待完成
1 parent f807fcd commit 59bc033

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

AsyncWorkerCollection/DoubleBuffer_/DoubleBufferTask.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@
33
using System.Collections.Generic;
44
using System.Threading.Tasks;
55

6+
#if NETFRAMEWORK
7+
using ValueTask = System.Threading.Tasks.Task;
8+
#endif
9+
610
namespace dotnetCampus.Threading
711
{
812
/// <summary>
913
/// 双缓存任务
1014
/// </summary>
11-
public class DoubleBufferTask<T, TU> where T : class, ICollection<TU>
15+
public class DoubleBufferTask<T, TU> : IAsyncDisposable
16+
where T : class, ICollection<TU>
1217
{
1318
/// <summary>
1419
/// 创建双缓存任务,执行任务的方法放在 <paramref name="doTask"/> 方法
@@ -92,5 +97,12 @@ public Task WaitAllTaskFinish()
9297
private readonly Func<T, Task> _doTask;
9398

9499
private DoubleBuffer<T, TU> DoubleBuffer { get; }
100+
101+
/// <inheritdoc />
102+
public async ValueTask DisposeAsync()
103+
{
104+
Finish();
105+
await WaitAllTaskFinish();
106+
}
95107
}
96108
}

AsyncWorkerCollection/IAsyncDisposable.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@
44
using System.Text;
55
using System.Threading.Tasks;
66

7+
#if NETFRAMEWORK
8+
using ValueTask = System.Threading.Tasks.Task;
9+
#endif
10+
711
namespace dotnetCampus.Threading
812
{
913
// 这个接口在 .NET Framework 4.5 没有
1014
interface IAsyncDisposable
1115
{
16+
ValueTask DisposeAsync();
1217
}
1318
}

0 commit comments

Comments
 (0)