[c#] C# yield 문과 비동기 작업 완료 여부
C#에서 yield
키워드는 메소드의 실행을 일시 중단하고 후속 처리를 위해 값을 반환할 수 있도록 합니다. 이는 작업이 완료될 때까지 기다릴 수 있는 유용한 메커니즘을 제공합니다. 그리고 비동기 작업의 완료 여부를 확인하는 방법도 함께 살펴보겠습니다.
yield 키워드와 IEnumerable
yield
키워드는 IEnumerable
인터페이스를 구현한 메소드 내에서 사용됩니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
public IEnumerable<int> GetNumbers()
{
yield return 1;
yield return 2;
yield return 3;
}
위의 예제에서 GetNumbers
메소드는 IEnumerable<int>
를 반환하며, 호출자는 각 yield return
문의 결과를 차례로 받게 됩니다.
비동기 작업 완료 여부 확인
비동기로 실행되는 작업의 완료 여부를 확인하려면, Task
클래스의 IsCompleted
속성을 사용할 수 있습니다.
public async Task<int> PerformAsyncTask()
{
await SomeLongRunningOperationAsync();
return 42;
}
// 호출 방법
var task = PerformAsyncTask();
if (task.IsCompleted)
{
int result = task.Result;
Console.WriteLine($"작업 결과: {result}");
}
else
{
Console.WriteLine("작업이 아직 완료되지 않았습니다.");
}
위의 예제에서 PerformAsyncTask
메소드는 비동기로 실행되며, 호출자는 IsCompleted
속성을 사용하여 작업의 완료 여부를 확인할 수 있습니다.
결론
C#의 yield
키워드를 사용하여 메소드의 실행을 중간 중간 일시 중단하고 후속 처리를 위한 값을 반환할 수 있습니다. 비동기 작업의 완료 여부를 확인하기 위해서는 Task
클래스의 IsCompleted
속성을 사용할 수 있습니다.
비동기 프로그래밍과 yield
키워드를 활용하여 효과적으로 작업을 처리하고 완료 여부를 안전하게 확인할 수 있습니다.
이 포스트는 다음 참고문헌을 바탕으로 작성되었습니다.
- Microsoft Docs. “yield (C# Reference).” https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/yield
부족한 점이 있으면 무엇이든 말씀해주세요!