ValueTask 구조체

정의

비동기 작업의 대기 가능한 결과를 제공합니다.Provides an awaitable result of an asynchronous operation.

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

설명

인스턴스 ValueTask 는를 Task 사용 하 여 AsTask대기 하거나로 변환할 수 있습니다.A ValueTask instance may either be awaited or converted to a Task using AsTask. 인스턴스 ValueTask 는 한 번만 대기 수 있으며, 소비자는 인스턴스가 완료 GetAwaiter() 될 때까지를 호출 하지 않을 수 있습니다.A ValueTask instance may only be awaited once, and consumers may not call GetAwaiter() until the instance has completed. 이러한 제한 사항이 허용 되지 않는 경우를 ValueTask 호출 Task AsTask하 여를로 변환 합니다.If these limitations are unacceptable, convert the ValueTask to a Task by calling AsTask.

ValueTask 인스턴스에서 다음 작업을 수행 하면 안 됩니다.The following operations should never be performed on a ValueTask instance:

  • 인스턴스를 여러 번 대기 합니다.Awaiting the instance multiple times.
  • AsTask 여러 번 호출 합니다.Calling AsTask multiple times.
  • 이러한 방법 중 하나를 사용 하 여 인스턴스를 사용 합니다.Using more than one of these techniques to consume the instance.

위의 작업을 수행 하는 경우 결과가 정의 되지 않습니다.If you do any of the above, the results are undefined.

ValueTask Task 또는 인스턴스IValueTaskSource 를 래핑할 수 있는 구조체입니다.A ValueTask is a structure that can wrap either a Task or a IValueTaskSource instance. 비동기 메서드에서 ValueTask 인스턴스를 IValueTaskSource 래핑하는를 반환 하면 처리량이 높은 응용 프로그램에서 재사용 가능한 IValueTaskSource 개체 풀을 사용 하 여 할당을 피할 수 있습니다.Returning a ValueTask that wraps a IValueTaskSource instance from an asynchronous method enables high-throughput applications to avoid allocations by using a pool of reusable IValueTaskSource objects. 자세한 내용은 이유, 기능 및 시기의 고 기능 이해를 참조 하세요.For more information, see Understanding the Whys, Whats, and Whens of ValueTask.

대신를 ValueTask 사용 하면 약간 Task 의 오버 헤드가 발생 합니다.Using a ValueTask instead of a Task introduces some overhead. ValueTask 여러 필드를 포함 하는 구조체 이므로 메서드에서 반환 하면 단일 Task 참조를 반환 하는 것과 비교 하 여 더 많은 데이터를 복사 하 게 됩니다.Because ValueTask is a structure with multiple fields, returning it from the method results in copying more data compared to returning a single Task reference. 따라서 결과를 반환 하지 않는 비동기 메서드의 기본 선택은을 Task반환 하는 것입니다.As such, the default choice for any asynchronous method that does not return a result should be to return a Task. 성능 분석을 입증 유용한 경우에을 ValueTask 대신 사용할 수는 Task합니다.Only if performance analysis proves it worthwhile should a ValueTask be used instead of a Task. Task.CompletedTaskTask 반환 하는 메서드가 동기적으로 완료 되는 경우 속성을 사용 하 여 성공적으로 완료 된 단일 항목을 다시 전달 해야 합니다.The Task.CompletedTask property should be used to hand back a successfully completed singleton in the case where a method returning a Task completes synchronously and successfully.

참고

ValueTask 형식을 사용 하는 것은 C# 7.0부터 지원 되며 Visual Basic의 모든 버전에서 지원 되지 않습니다.The use of the ValueTask type is supported starting with C# 7.0 and is not supported by any version of Visual Basic.

생성자

ValueTask(IValueTaskSource, Int16)

작업을 나타내는 제공된 IValueTaskSource개체를 사용하여 ValueTask 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ValueTask class using the supplied IValueTaskSource object that represents the operation.

ValueTask(Task)

작업을 나타내는 제공된 작업을 사용하여 ValueTask 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the ValueTask class using the supplied task that represents the operation.

속성

IsCanceled

이 개체가 취소된 작업을 나타내는지를 지정하는 값을 가져옵니다.Gets a value that indicates whether this object represents a canceled operation.

IsCompleted

이 개체가 완료된 작업을 나타내는지를 지정하는 값을 가져옵니다.Gets a value that indicates whether this object represents a completed operation.

IsCompletedSuccessfully

이 개체가 성공적으로 완료된 작업을 나타내는지를 지정하는 값을 가져옵니다.Gets a value that indicates whether this object represents a successfully completed operation.

IsFaulted

이 개체가 실패한 작업을 나타내는지를 지정하는 값을 가져옵니다.Gets a value that indicates whether this object represents a failed operation.

메서드

AsTask()

ValueTask를 나타내는 Task 개체를 검색합니다.Retrieves a Task object that represents this ValueTask.

ConfigureAwait(Boolean)

이 값에 awaiter를 구성합니다.Configures an awaiter for this value.

Equals(Object)

지정된 개체가 현재 ValueTask 인스턴스와 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current ValueTask instance.

Equals(ValueTask)

지정된 ValueTask 개체가 현재 ValueTask 개체와 같은지 여부를 확인합니다.Determines whether the specified ValueTask object is equal to the current ValueTask object.

GetAwaiter()

이 값에 awaiter를 만듭니다.Creates an awaiter for this value.

GetHashCode()

이 인스턴스의 해시 코드를 반환합니다.Returns the hash code for this instance.

Preserve()

향후 어떤 시점에서든 사용할 수 있는 ValueTask를 가져옵니다.Gets a ValueTask that may be used at any point in the future.

연산자

Equality(ValueTask, ValueTask)

ValueTask 값이 같은지 여부를 비교합니다.Compares two ValueTask values for equality.

Inequality(ValueTask, ValueTask)

ValueTask 값이 서로 같지 않은지 확인합니다.Determines whether two ValueTask values are unequal.

적용 대상