private async Task RunTasksAsync()
설명
✓ async 키워드와 Task 반환 형식을 사용한 비동기 메서드
✓ 메서드 내부에서 await 키워드를 사용할 수 있으며, 비동기 작업을 처리할 수 있다.
사용 의도
✓ 비동기 작업을 수행하고 호출자에게 완료 여부를 알리고 싶을 때 사용.
✓호출자는 await 키워드를 사용하여 메서드가 완료될 때까지 대기할 수 있다.
예제코드
private async Task RunTasksAsync()
{
await Task.Delay(1000); // 1초 대기
Console.WriteLine("RunTasksAsync 완료");
}
기대 효과
✓ 비동기 작업을 수행하고, 호출자는 해당 작업이 완료될 때까지 비동기적으로 대기할 수 있습니다.
✓ 예외 처리를 쉽게 할 수 있습니다.
✓ 호출자가 await 키워드를 사용하여 메서드를 호출할 수 있습니다.
✓ 예외가 발생하면 await에 의해 호출자에게 전달됩니다.
private void RunTasksAsync()
설명
✓ 반환 형식이 void인 동기 메서드입니다.
✓ 비동기 메서드가 아니다.
사용 의도
✓ 비동기 작업이 필요 없는 경우 사용.
✓ 메서드가 즉시 실행되고 완료됨.
예제코드
private void RunTasksAsync()
{
Console.WriteLine("RunTasksAsync 실행 중");
}
기대효과
✓ 즉시 실행되고 완료
✓ 호출자는 메서드가 즉시 완료됨을 기대.
✓ 예외가 발생하면 즉시 호출자에게 전달
private Task RunTasksAsync()
설명
✓ 반환 형식이 Task인 비동기 메서드입니다.
✓ async 키워드를 사용하지 않았으므로, 명시적으로 Task를 반환해야 한다.
사용 의도
✓ 비동기 작업을 수행하고 호출자에게 완료 여부를 알리고 싶을 때 사용.
✓ async 키워드를 사용하지 않으므로, 명시적으로 Task를 반환해야 한다.
예제
private Task RunTasksAsync()
{
return Task.Delay(1000); // 1초 대기
}
기대 효과
✓ 비동기 작업을 수행하고, 호출자는 해당 작업이 완료될 때까지 비동기적으로 대기할 수 있다.
✓ 호출자가 await 키워드를 사용하여 메서드를 호출할 수 있다.
✓ 예외가 발생하면 await에 의해 호출자에게 전달됨.
private async void RunTasksAsync()(이벤트 핸들러에서 사용) 작업 완료 대기 불가
설명
사용 의도
✓호출자는 해당 메서드가 비동기적으로 실행됨을 알지 못한다.
예제
private async void RunTasksAsync()
{
await Task.Delay(1000); // 1초 대기
Console.WriteLine("RunTasksAsync 완료");
}
기대효과
결과
async void 이벤트 핸들러의 의미
비동기 작업 수행: async void 메서드는 이벤트 핸들러 내에서 비동기 작업을 수행할 수 있게 한다.
예외 처리: async void 메서드 내에서 발생한 예외는 호출자에게 전달되지 않음.
private async void LoadButton_Click(object sender, EventArgs e)
{
try
{
statusLabel.Text = "Status: Loading...";
await LoadDataAsync();
statusLabel.Text = "Status: Load complete!";
}
catch (Exception ex)
{
statusLabel.Text = $"Status: Error - {ex.Message}";
}
}
private async Task LoadDataAsync()
{
// Simulate a long-running task
await Task.Delay(3000); // 3초 대기
}
private Task<T> RunTasksAsync()
설명
사용 의도
✓ 비동기 작업을 수행하고 결과를 호출자에게 반환하고 싶을 때 사용합니다.
예제
private async Task<int> RunTasksAsync()
{
await Task.Delay(1000); // 1초 대기
return 42;
}
기대 효과
✓ 비동기 작업을 수행하고, 결과를 호출자에게 반환.
결과
요약
-
async Task: 비동기 작업을 수행하고 호출자가 작업 완료를 기다릴 수 있게 합니다. 주로 비동기 메서드에서 사용.
-
void: 동기 메서드로, 비동기 작업을 수행하지 않음. 즉시 완료.
-
Task: 비동기 작업을 수행하고 호출자가 작업 완료를 기다릴 수 있게 함.
-
async void: 비동기 작업을 수행하지만 호출자가 작업 완료를 알 수 없음. 주로 이벤트 핸들러에서 사용됨.
-
Task<T>: 비동기 작업을 수행하고 결과를 호출자에게 반환. 호출자가 작업 완료를 기다리고 결과를 받을 수 있게 한다.

댓글