[C#/TPL/.NET5] TaskAsyncEnumerableExtensions 클래스 : WithCancellation 확장 메소드를 사용해 비동기 열거 취소하기
C#/TPL 2021. 8. 15. 01:31728x90
반응형
728x170
▶ Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 값 열거 가능형 구하기 (비동기) - GetValueEnumerableAsync(token)
/// <summary>
/// 값 열거 가능형 구하기 (비동기)
/// </summary>
/// <param name="token">취소 토큰</param>
/// <returns>값 열거 가능형</returns>
private static async IAsyncEnumerable<int> GetValueEnumerableAsync([EnumeratorCancellation] CancellationToken token = default)
{
for(int i = 0; i < 10; i++)
{
await Task.Delay(i * 100, token);
yield return i;
}
}
#endregion
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
/// <returns>태스크</returns>
private static async Task Main()
{
using CancellationTokenSource source = new CancellationTokenSource(3000);
CancellationToken token = source.Token;
await foreach(int value in GetValueEnumerableAsync().WithCancellation(token))
{
Console.WriteLine(value);
}
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > TPL' 카테고리의 다른 글
[C#/TPL/.NET5] Parallel 클래스 : Invoke 정적 메소드를 사용해 병렬 작업 실행하기 (0) | 2021.08.16 |
---|---|
[C#/TPL/.NET5] Parallel 클래스 : ForEach 정적 메소드를 사용해 합계 구하기 (0) | 2021.08.16 |
[C#/TPL/.NET5] Parallel 클래스 : ForEach 정적 메소드에서 CancellationToken 객체를 사용해 취소하기 (0) | 2021.08.15 |
[C#/TPL/.NET5] ParallelLoopState 클래스 : Stop 메소드를 사용해 병렬 작업 취소하기 (0) | 2021.08.15 |
[C#/TPL/.NET5] Parallel 클래스 : ForEach 정적 메소드 사용하기 (0) | 2021.08.15 |
[C#/TPL/.NET5] ValueTask<T> 클래스 사용하기 (0) | 2021.08.15 |
[C#/TPL/.NET5] AsyncContext 클래스 : Run 정적 메소드를 사용해 async void 예외 처리하기 (0) | 2021.08.13 |
[C#/TPL/.NET5] TaskExtensions 클래스 : OrderByCompletion 확장 메소드를 사용해 순서대로 완료되는 태스크의 신규 컬렉션 생성하기 (0) | 2021.08.13 |
[C#/TPL/.NET5] 누겟 설치 : Nito.AsyncEx (0) | 2021.08.13 |
[C#/TPL/.NET5] Task 클래스 : 모든 태스크 종료시까지 대기하기 (0) | 2021.08.13 |
댓글을 달아 주세요