[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 키워드를 활용하여 효과적으로 작업을 처리하고 완료 여부를 안전하게 확인할 수 있습니다.

이 포스트는 다음 참고문헌을 바탕으로 작성되었습니다.

부족한 점이 있으면 무엇이든 말씀해주세요!