728x90
728x170
▶ Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
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 태스크 실행하기 (비동기) - ExecuteTaskAsync(task)
/// <summary>
/// 태스크 실행하기 (비동기)
/// </summary>
/// <param name="task">태스크</param>
/// <returns>태스크</returns>
private static async Task ExecuteTaskAsync(Task<int> task)
{
int result = await task;
Console.WriteLine(result);
}
#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>[] sourceTaskArray = new[] { task1, task2, task3 };
IEnumerable<Task> taskEnumerable = from task in sourceTaskArray select ExecuteTaskAsync(task);
Task[] targetTaskArray = taskEnumerable.ToArray();
await Task.WhenAll(targetTaskArray);
}
#endregion
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
/// <returns>태스크</returns>
private async static Task Main()
{
await ProcessTaskAsync();
}
#endregion
}
}
728x90
그리드형(광고전용)