[C#/TPL] TaskExtensions 클래스 : OrderByCompletion 확장 메소드를 사용해 순서대로 완료되는 태스크의 신규 컬렉션 생성하기
C#/TPL 2021. 8. 13. 21:31728x90
반응형
728x170
▶ Program.cs
using System;
using System.Threading.Tasks;
using Nito.AsyncEx;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 값 구하기 (비동기) - GetValueAsync(source)
/// <summary>
/// 값 구하기 (비동기)
/// </summary>
/// <param name="source">소스 값</param>
/// <returns>값 태스크</returns>
private static async Task<int> GetValueAsync(int source)
{
await Task.Delay(TimeSpan.FromSeconds(source));
return source;
}
#endregion
#region 태스크 처리하기 (비동기) - ProcessTaskAsync()
/// <summary>
/// 태스크 처리하기 (비동기)
/// </summary>
/// <returns>태스크</returns>
private static async Task ProcessTaskAsync()
{
Task<int> task1 = GetValueAsync(2);
Task<int> task2 = GetValueAsync(3);
Task<int> task3 = GetValueAsync(1);
Task<int>[] taskArray = new[] { task1, task2, task3 };
foreach(Task<int> task in taskArray.OrderByCompletion())
{
int result = await task;
Console.WriteLine(result);
}
}
#endregion
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
/// <returns>태스크</returns>
private async static Task Main()
{
await ProcessTaskAsync();
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > TPL' 카테고리의 다른 글
[C#/TPL] ParallelLoopState 클래스 : Stop 메소드를 사용해 병렬 작업 취소하기 (0) | 2021.08.15 |
---|---|
[C#/TPL] Parallel 클래스 : ForEach 정적 메소드 사용하기 (0) | 2021.08.15 |
[C#/TPL] TaskAsyncEnumerableExtensions 클래스 : WithCancellation 확장 메소드를 사용해 비동기 열거 취소하기 (0) | 2021.08.15 |
[C#/TPL] ValueTask<T> 클래스 사용하기 (0) | 2021.08.15 |
[C#/TPL] AsyncContext 클래스 : Run 정적 메소드를 사용해 async void 예외 처리하기 (0) | 2021.08.13 |
[C#/TPL] TaskExtensions 클래스 : OrderByCompletion 확장 메소드를 사용해 순서대로 완료되는 태스크의 신규 컬렉션 생성하기 (0) | 2021.08.13 |
[C#/TPL] 누겟 설치 : Nito.AsyncEx (0) | 2021.08.13 |
[C#/TPL] Task 클래스 : 모든 태스크 종료시까지 대기하기 (0) | 2021.08.13 |
[C#/TPL] Task 클래스 : CompletedTask 정적 속성/FromException 정적 메소드를 사용해 동기 실행을 비동기로 실행하기 (0) | 2021.07.11 |
[C#/TPL] Task 클래스 : FromCanceled<T> 정적 메소드를 사용해 취소로 완료된 태스크 생성하기 (0) | 2021.07.11 |
[C#/TPL] Task<T> 클래스 : FromException<T> 정적 메소드를 사용해 완료시 예외를 갖는 태스크 생성하기 (0) | 2021.07.11 |
댓글을 달아 주세요