ValueTask 구조체
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
비동기 작업의 대기 가능한 결과를 제공합니다.
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
대기 중이거나 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() | |
ConfigureAwait(Boolean) |
이 값에 awaiter를 구성합니다. |
Equals(Object) |
지정된 개체가 현재 ValueTask 인스턴스와 같은지 여부를 확인합니다. |
Equals(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 값이 서로 같지 않은지 확인합니다. |