- 일련의 작업을 입력받고, 입력받은 작업 중 하나를 완료하면, 완료된 작업을 반환
public static string Run1()
{
StringBuilder sb = new StringBuilder();
for (var i = 0; i <= 3; i++) {
sb.AppendLine(String.Format("Task1 {0}", i));
};
return sb.ToString();
}
public static string Run2()
{
StringBuilder sb = new StringBuilder();
for (var i = 0; i <= 300; i++) {
sb.AppendLine(String.Format("Task2 {0}", i));
};
return sb.ToString();
}
public static async void WaitWhanAnyTask()
{
// 동시에 두 개의 task 시작
Task<string> task2 = Task.FromResult(AsyncTest.Run2());
Task<string> task1 = Task.FromResult(AsyncTest.Run1());
try {
// 두 개의 작업 중 하나의 완료를 기다린다.
Task<string> results = await Task.WhenAny(task2, task1);
Console.WriteLine(results.Result);
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
- 결과
'프로그래밍언어 > C#' 카테고리의 다른 글
[C#] TCP/IP 소켓 프로그래밍_입출력 버퍼, 슬라이딩 윈도우 (0) | 2023.08.15 |
---|---|
[C#] 동시성 프로그래밍_비동기 스트림 (0) | 2023.07.12 |
[C#] 동시성 프로그래밍_Task.WhenAll (0) | 2023.07.06 |
[C#] 동시성 프로그래밍_ CancellationTokenSource를 이용한 타임아웃 구현 (0) | 2023.07.04 |
[C#] 동시성 프로그래밍_ 지수 백오프(exponential backoff) (0) | 2023.07.03 |