Task 클래스

2013-12-13

비동기 작업을 나타냅니다.

Namespace:  System.Threading.Tasks
어셈블리:  mscorlib(mscorlib.dll)

public class Task : IAsyncResult

Task 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드Task(Action)지정된 동작을 사용하여 새 Task를 초기화합니다.
Public 메서드Task(Action, CancellationToken)지정된 동작을 사용하여 새 TaskCancellationToken을 초기화합니다.
Public 메서드Task(Action, TaskCreationOptions)지정된 동작 및 만들기 옵션을 사용하여 새 Task를 초기화합니다.
Public 메서드Task(Action<Object>, Object)지정된 동작 및 상태를 사용하여 새 Task를 초기화합니다.
Public 메서드Task(Action, CancellationToken, TaskCreationOptions)지정된 동작 및 만들기 옵션을 사용하여 새 Task를 초기화합니다.
Public 메서드Task(Action<Object>, Object, CancellationToken)지정된 동작, 상태 및 옵션을 사용하여 새 Task을 초기화합니다.
Public 메서드Task(Action<Object>, Object, TaskCreationOptions)지정된 동작, 상태 및 옵션을 사용하여 새 Task을 초기화합니다.
Public 메서드Task(Action<Object>, Object, CancellationToken, TaskCreationOptions)지정된 동작, 상태 및 옵션을 사용하여 새 Task을 초기화합니다.
맨 위

  이름설명
Public 속성AsyncStateTask를 만들 때 제공된 상태 개체 또는 제공된 개체가 없는 경우 null을 가져옵니다.
Public 속성CreationOptions이 작업을 만드는 데 사용된 TaskCreationOptions를 가져옵니다.
Public 속성정적 멤버CurrentId현재 실행 중인 Task의 고유 ID를 반환합니다.
Public 속성ExceptionTask가 중간에 종료되도록 하는 AggregateException을 가져옵니다. Task가 완료되었거나 예외를 아직 발생하지 않았을 경우 null을 반환합니다.
Public 속성정적 멤버FactoryTaskTask<TResult>를 만드는 팩터리 메서드에 대한 액세스를 제공합니다.
Public 속성IdTask 인스턴스의 고유 ID를 가져옵니다.
Public 속성IsCanceledTask 인스턴스가 취소되어 실행을 완료했는지 여부를 가져옵니다.
Public 속성IsCompletedTask가 완료되었는지 여부를 가져옵니다.
Public 속성IsFaulted처리되지 않은 예외로 인해 Task가 완료되었는지 여부를 가져옵니다.
Public 속성Status이 작업의 TaskStatus를 가져옵니다.
맨 위

  이름설명
Public 메서드ConfigureAwaitTask을 대기하는 데 사용할 awaiter를 구성합니다.
Public 메서드ContinueWith(Action<Task>)대상 Task이 완료될 때 비동기적으로 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task>, CancellationToken)대상 Task이 완료될 때 비동기적으로 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task>, TaskContinuationOptions)지정된 TaskContinuationOptions에 따라 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task>, TaskScheduler)대상 Task이 완료될 때 비동기적으로 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task, Object>, Object)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task, Object>, Object, CancellationToken)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task, Object>, Object, TaskContinuationOptions)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task, Object>, Object, TaskScheduler)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task>, CancellationToken, TaskContinuationOptions, TaskScheduler)지정된 TaskContinuationOptions에 따라 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith(Action<Task, Object>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, TResult>)대상 Task이 완료될 때 비동기적으로 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, TResult>, CancellationToken)대상 Task이 완료될 때 비동기적으로 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, TResult>, TaskContinuationOptions)continuationOptions에 지정된 조건에 따라 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, TResult>, TaskScheduler)대상 Task이 완료될 때 비동기적으로 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, Object, TResult>, Object)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, Object, TResult>, Object, CancellationToken)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, Object, TResult>, Object, TaskContinuationOptions)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, Object, TResult>, Object, TaskScheduler)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, TResult>, CancellationToken, TaskContinuationOptions, TaskScheduler)continuationOptions에 지정된 조건에 따라 실행되는 연속 작업을 만듭니다.
Public 메서드ContinueWith<TResult>(Func<Task, Object, TResult>, Object, CancellationToken, TaskContinuationOptions, TaskScheduler)대상 Task이 완료될 때 실행되는 연속 작업을 만듭니다.
Public 메서드정적 멤버Delay(Int32)지연 시간 후 완료될 작업을 만듭니다.
Public 메서드정적 멤버Delay(TimeSpan)지연 시간 후 완료될 작업을 만듭니다.
Public 메서드정적 멤버Delay(Int32, CancellationToken)지연 시간 후 완료될 작업을 만듭니다.
Public 메서드정적 멤버Delay(TimeSpan, CancellationToken)지연 시간 후 완료될 작업을 만듭니다.
Public 메서드Equals(Object)지정한 Object가 현재 Object와 같은지 확인합니다. (Object에서 상속됨)
Protected 메서드Finalize가비지 수집기에서 Object를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드정적 멤버FromResult<TResult>지정한 결과로 성공적으로 완료된 Task<TResult>를 만듭니다.
Public 메서드GetAwaiterTask을 대기하는 데 사용할 awaiter를 가져옵니다.
Public 메서드GetHashCode특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드정적 멤버Run(Action)지정된 작업이 Threadpool에서 실행되기를 기다리고 해당 작업에 대한 Task 핸들을 반환합니다.
Public 메서드정적 멤버Run(Func<Task>)지정된 작업이 Threadpool에서 실행되기를 기다리고 function에서 반환하는 Task에 대한 프록시를 반환합니다.
Public 메서드정적 멤버Run(Action, CancellationToken)지정된 작업이 Threadpool에서 실행되기를 기다리고 해당 작업에 대한 Task 핸들을 반환합니다.
Public 메서드정적 멤버Run(Func<Task>, CancellationToken)지정된 작업이 Threadpool에서 실행되기를 기다리고 function에서 반환하는 Task에 대한 프록시를 반환합니다.
Public 메서드정적 멤버Run<TResult>(Func<Task<TResult>>)지정된 작업이 Threadpool에서 실행되기를 기다리고 function에서 반환하는 Task(TResult)에 대한 프록시를 반환합니다.
Public 메서드정적 멤버Run<TResult>(Func<TResult>)지정된 작업이 Threadpool에서 실행되기를 기다리고 해당 작업에 대한 Task(TResult) 핸들을 반환합니다.
Public 메서드정적 멤버Run<TResult>(Func<Task<TResult>>, CancellationToken)지정된 작업이 Threadpool에서 실행되기를 기다리고 function에서 반환하는 Task(TResult)에 대한 프록시를 반환합니다.
Public 메서드정적 멤버Run<TResult>(Func<TResult>, CancellationToken)지정된 작업이 Threadpool에서 실행되기를 기다리고 해당 작업에 대한 Task(TResult) 핸들을 반환합니다.
Public 메서드RunSynchronously()현재 TaskScheduler에서 Task를 동기적으로 실행합니다.
Public 메서드RunSynchronously(TaskScheduler)제공된 TaskScheduler에서 Task를 동기적으로 실행합니다.
Public 메서드Start()Task를 시작하고 현재 TaskScheduler에 실행을 예약합니다.
Public 메서드Start(TaskScheduler)Task를 시작하고 지정된 TaskScheduler에 실행을 예약합니다.
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
Public 메서드Wait()Task의 실행이 완료되기를 기다립니다.
Public 메서드Wait(CancellationToken)Task의 실행이 완료되기를 기다립니다.
Public 메서드Wait(Int32)Task의 실행이 완료되기를 기다립니다.
Public 메서드Wait(TimeSpan)Task의 실행이 완료되기를 기다립니다.
Public 메서드Wait(Int32, CancellationToken)Task의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAll(Task[])제공된 모든 Task 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAll(Task[], Int32)제공된 모든 Task 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAll(Task[], CancellationToken)제공된 모든 Task 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAll(Task[], TimeSpan)제공된 모든 Task 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAll(Task[], Int32, CancellationToken)제공된 모든 Task 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAny(Task[])제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAny(Task[], Int32)제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAny(Task[], CancellationToken)제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAny(Task[], TimeSpan)제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WaitAny(Task[], Int32, CancellationToken)제공된 Task 개체 중 임의 개체의 실행이 완료되기를 기다립니다.
Public 메서드정적 멤버WhenAll(IEnumerable<Task>)제공된 작업이 모두 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버WhenAll(Task[])제공된 작업이 모두 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버WhenAll<TResult>(IEnumerable<Task<TResult>>)제공된 작업이 모두 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버WhenAll<TResult>(Task<TResult>[])제공된 작업이 모두 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버WhenAny(IEnumerable<Task>)제공된 임의 작업이 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버WhenAny(Task[])제공된 임의 작업이 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버WhenAny<TResult>(IEnumerable<Task<TResult>>)제공된 임의 작업이 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버WhenAny<TResult>(Task<TResult>[])제공된 임의 작업이 완료되었을 때 완료되는 작업을 만듭니다.
Public 메서드정적 멤버Yield대기되었을 때 비동기적으로 현재 컨텍스트로 다시 산출되는 awaitable 작업을 만듭니다.
맨 위

  이름설명
Public 확장 메서드AsAsyncAction시작된 작업을 나타내는 Windows 런타임 비동기 동작을 반환합니다. (WindowsRuntimeSystemExtensions에서 정의됨)
맨 위

  이름설명
명시적 인터페이스 구현Private 속성IAsyncResult.AsyncWaitHandle작업이 완료되기를 기다리는 데 사용할 수 있는 WaitHandle을 가져옵니다.
명시적 인터페이스 구현Private 속성IAsyncResult.CompletedSynchronously작업이 동기적으로 완료되었는지 여부를 나타내는 표시를 가져옵니다.
맨 위

Task 인스턴스는 다양한 방법으로 만들어질 수 있습니다. 가장 일반적인 방법은 작업 종류의 Factory 속성을 사용하여 여러 용도로 작업을 만드는 데 사용할 수 있는 TaskFactory 인스턴스를 검색하는 것입니다. 예를 들어, 작업을 실행하는 Task를 만들려면 팩터리의 StartNew 메서드를 사용할 수 있습니다.

// C#
var t = Task.Factory.StartNew(() => DoAction());

' Visual Basic
 Dim t = Task.Factory.StartNew(Function() DoAction())

자세한 예제를 보려면 [458b5e69-5210-45e5-bc44-3888f86abd6f]를 참조하세요.

또한 Task 클래스는 작업을 초기화하지만 실행을 예약하지 않는 생성자를 제공합니다. 성능상의 이유로 TaskFactory의 StartNew 메서드는 연산 작업을 만들고 스케줄링하는 기본 메커니즘이 되어야 하지만 작성과 스케줄링을 분리해야 하는 시나리오의 경우 생성자를 사용할 수 있으며 작업의 Start 메서드는 나중에 실행하도록 작업을 예약하는 데 사용될 수 있습니다.

값을 반환하는 작업의 경우 Task<TResult> 클래스를 사용해야 합니다.

디버거 개발자의 경우

고객 디버거를 구현하는 개발자의 경우 작업의 여러 내부 및 전용 멤버를 사용할 수 있습니다(릴리스마다 다를 수 있음). m_taskId 필드는 Id 속성에 대한 백업 저장소로 사용되지만 디버거에서 직접 이 필드에 액세스하는 것이 속성의 getter 메서드를 통해 같은 값에 액세스하는 것보다 효율적일 수 있습니다(s_taskIdCounter Int32 카운터는 작업에 대한 다음 사용 가능한 ID를 검색하는 데 사용됩니다). 마찬가지로, Int32 m_stateFlags 필드는 작업의 현재 수명 주기 단계에 대한 정보, Status 속성을 통해 액세스할 수도 있는 정보를 저장합니다. m_action System.Object 필드는 작업 대리자에 참조를 저장하고 m_stateObject System.Object 필드는 개발자가 작업에 전달한 비동기 상태를 저장합니다. 마지막으로, 스택 프레임을 구문 분석하는 디버거의 경우 InternalWait 메서드는 작업이 대기 작업에 들어올 때 잠재적인 표식에 대해 사용됩니다.

다음 예제에서는 TaskFactory.StartNew 메서드를 사용하여 작업을 시작하는 방법을 보여 줍니다.

Windows Phone OS

지원되는 버전: 8.0

Task의 모든 멤버가 스레드로부터 안전하며 다중 스레드에서 동시에 사용할 수 있습니다.

표시:
© 2014 Microsoft