다음을 통해 공유


ValueTask 구조체

정의

비동기 작업의 대기 가능한 결과를 제공합니다.

public value class ValueTask : IEquatable<System::Threading::Tasks::ValueTask>
public readonly struct ValueTask : IEquatable<System.Threading.Tasks.ValueTask>
type ValueTask = struct
Public Structure ValueTask
Implements IEquatable(Of ValueTask)
상속
ValueTask
구현

설명

인스턴스가 ValueTask 대기 중이거나 usingAsTask으로 Task 변환될 수 있습니다. 인스턴스는 ValueTask 한 번만 대기할 수 있으며, 소비자는 인스턴스가 완료될 때까지 호출 GetAwaiter() 하지 않을 수 있습니다. 이러한 제한 사항이 허용되지 않는 경우 호출AsTask하여 ValueTask 변환 Task 합니다.

인스턴스에서 다음 작업을 수행 ValueTask 해서는 안 됩니다.

  • 인스턴스를 여러 번 대기합니다.
  • 여러 번 호출 AsTask 합니다.
  • 이러한 기술 중 하나 이상을 사용하여 인스턴스를 사용합니다.

위의 작업을 수행하면 결과가 정의되지 않습니다.

A ValueTask 는 인스턴스 또는 인스턴스를 래핑할 수 있는 Task 구조체입니다 IValueTaskSource . ValueTask 비동기 메서드에서 인스턴스를 래핑 IValueTaskSource 하는 값을 반환하면 다시 사용할 수 있는 개체 풀을 사용하여 높은 처리량 애플리케이션에서 할당을 방지할 수 있습니다IValueTaskSource. 자세한 내용은 ValueTask의 이유, 내용 및 시기 이해를 참조하세요.

대신 Task 사용 ValueTask 하면 약간의 오버헤드가 발생합니다. 여러 필드가 있는 구조체 ValueTask 이므로 메서드에서 반환하면 단일 Task 참조를 반환하는 것에 비해 더 많은 데이터를 복사할 수 있습니다. 따라서 결과를 반환하지 않는 비동기 메서드에 대한 기본 선택은 .를 Task반환하는 것입니다. 성능 분석이 가치가 ValueTask Task있음을 증명하는 경우에만 . 이 속성은 Task.CompletedTask 완료를 반환하는 메서드가 동기적으로 성공적으로 완료된 경우 성공적으로 완료된 싱글톤을 Task 다시 전달하는 데 사용해야 합니다.

참고

형식의 ValueTask 사용은 C# 7.0부터 지원되며 Visual Basic 버전에서는 지원되지 않습니다.

참고

매개 변수가 없는 생성자 또는 default(ValueTask) 구문(초기화되지 않은 구조체)으로 만든 인스턴스는 동기적으로 성공적으로 완료된 작업을 나타냅니다.

생성자

ValueTask(IValueTaskSource, Int16)

작업을 나타내는 제공된 IValueTaskSource개체를 사용하여 ValueTask 클래스의 새 인스턴스를 초기화합니다.

ValueTask(Task)

작업을 나타내는 제공된 작업을 사용하여 ValueTask 클래스의 새 인스턴스를 초기화합니다.

속성

CompletedTask

이미 성공적으로 완료된 작업을 가져옵니다.

IsCanceled

이 개체가 취소된 작업을 나타내는지를 지정하는 값을 가져옵니다.

IsCompleted

이 개체가 완료된 작업을 나타내는지를 지정하는 값을 가져옵니다.

IsCompletedSuccessfully

이 개체가 성공적으로 완료된 작업을 나타내는지를 지정하는 값을 가져옵니다.

IsFaulted

이 개체가 실패한 작업을 나타내는지를 지정하는 값을 가져옵니다.

메서드

AsTask()

ValueTask를 나타내는 Task 개체를 검색합니다.

ConfigureAwait(Boolean)

이 값에 awaiter를 구성합니다.

Equals(Object)

지정된 개체가 현재 ValueTask 인스턴스와 같은지 여부를 확인합니다.

Equals(ValueTask)

지정된 ValueTask 개체가 현재 ValueTask 개체와 같은지 여부를 확인합니다.

FromCanceled(CancellationToken)

지정된 취소 토큰을 사용하여 취소로 인해 완료된 ValueTask을 만듭니다.

FromCanceled<TResult>(CancellationToken)

지정된 취소 토큰을 사용하여 취소로 인해 완료된 ValueTask<TResult>을 만듭니다.

FromException(Exception)

지정된 예외를 사용하여 완료된 ValueTask을 만듭니다.

FromException<TResult>(Exception)

지정된 예외를 사용하여 완료된 ValueTask<TResult>을 만듭니다.

FromResult<TResult>(TResult)

지정된 결과로 성공적으로 완료되는 ValueTask<TResult>을 만듭니다.

GetAwaiter()

이 값에 awaiter를 만듭니다.

GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.

Preserve()

향후 어떤 시점에서든 사용할 수 있는 ValueTask를 가져옵니다.

연산자

Equality(ValueTask, ValueTask)

ValueTask 값이 같은지 여부를 비교합니다.

Inequality(ValueTask, ValueTask)

ValueTask 값이 서로 같지 않은지 확인합니다.

적용 대상