"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C#에서 Async/Await : 작업 대 비극을 반환 할시기?

C#에서 Async/Await : 작업 대 비극을 반환 할시기?

2025-03-23에 게시되었습니다
검색:361

Async/Await in C#: When to Return Task vs. Void?

C# Asynchronous 프로그래밍에서 async 메소드의 반환 값 : task void ?

c#을 사용하여 비동기로 프로그래밍 할 때

async 메소드는 task 또는 void 를 반환 할 수 있습니다. 이 선택은 방법의 동작과 호출 코드와 상호 작용하는 방법을 결정하기 때문에 중요합니다.

언제

task 를 반환합니다.]

일반적으로, 발신자에게 비동기 조작의 진행 상황이나 결과를 노출하려면

task 를 반환해야합니다. 이를 통해 발신자는 작업을 기다리고 완료된 후에 실행을 계속할 수 있습니다. task 는 여러 작업의 진행 상황을 모니터링 할 수있는 Async-Foreach 와 같은 예외 처리 및 비동기 모드를 사용할 수 있습니다.

언제 반환 할 것인지

void ]

void 에서 async 메소드를 반환하기에 유일한 적절한 사례는 이벤트 핸들러 또는 UI 콜백과 같은 반환 유형이 명시 적으로 필요할 때입니다. 이 경우 발신자는 메소드를 기다릴 수 없어야하며 async 키워드가 필요하지 않습니다. 최상위 레벨을 피하십시오 Async void 메소드

메소드가 표시된 Async void 는 특별한 의미를 가지고 있으며주의해서 사용해야합니다. 최상위 비동기 작업을 나타내며 작업을 반환하는 방법과는 다른 예외 처리 규칙이 있습니다. 최상위 레벨의 예외

void

메소드의 예외는 처리되지 않은 예외로 취급되며 예상치 못한 행동으로 이어질 수 있습니다. 예를 들어, 다음 코드를 고려하십시오.

public static async void AsyncMethod2 (int num) { await task.factory.startnew (() => thread.sleep (num)); }

public static async void AsyncMethod2(int num)
{
    await Task.Factory.StartNew(() => Thread.Sleep(num));
}
:

때문에 문제가 될 수 있습니다. 발신자가 방법을 기다리고 진행 상황을 모니터링하는 것을 방지합니다.

    메소드의 예외는 처리되지 않으며 응용 프로그램이 비정상적으로 행동 할 수 있습니다.
  1. Async Task
메소드와

키워드를 사용하여 키워드를 사용하여 올바른 예외 처리를 보장하고 비동기 작업을 추적하고 관리 할 수있는 기능을 유지하는 것이 가장 좋습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3