다음을 통해 공유


Task.Start 메서드

정의

Task를 시작합니다.

오버로드

Start()

Task를 시작하고 현재 TaskScheduler에 실행을 예약합니다.

Start(TaskScheduler)

Task를 시작하고 지정된 TaskScheduler에 실행을 예약합니다.

Start()

Task를 시작하고 현재 TaskScheduler에 실행을 예약합니다.

public:
 void Start();
public void Start ();
member this.Start : unit -> unit
Public Sub Start ()

예외

Task 인스턴스가 삭제되었습니다.

Task 가 시작할 수 있는 상태가 아닙니다. 이미 시작되었거나, 실행되었거나, 취소되었거나 아니면 직접 일정 관리를 지원하지 않는 방식으로 만들어졌을 수 있습니다.

예제

다음 예제에서는 생성자를 호출 Task(Action) 하여 작업 ID 및 관리되는 스레드 ID를 표시하는 새 Task 개체를 인스턴스화한 다음 루프를 실행합니다. 그런 다음, 메서드를 Start 호출하여 작업을 실행합니다. 콘솔 앱이므로 태스크 실행이 완료되기 전에 앱이 종료되지 않도록 메서드를 호출 Wait 해야 합니다.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = new Task( () => { Console.WriteLine("Task {0} running on thread {1}",
                                                  Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
                                for (int ctr = 1; ctr <= 10; ctr++)
                                   Console.WriteLine("   Iteration {0}", ctr); } 
                        );
      t.Start();
      t.Wait();   
   }
}
// The example displays output like the following:
//     Task 1 running on thread 3
//        Iteration 1
//        Iteration 2
//        Iteration 3
//        Iteration 4
//        Iteration 5
//        Iteration 6
//        Iteration 7
//        Iteration 8
//        Iteration 9
//        Iteration 10
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As New Task(Sub()
                           Console.WriteLine("Task {0} running on thread {1}",
                                             Task.CurrentId, Thread.CurrentThread.ManagedThreadId )
                           For ctr As Integer = 1 To 10
                              Console.WriteLine("   Iteration {0}", ctr)
                           Next   
                        End Sub)
      t.Start
      t.Wait()   
   End Sub
End Module
' The example displays output like the following:
'     Task 1 running on thread 3
'        Iteration 1
'        Iteration 2
'        Iteration 3
'        Iteration 4
'        Iteration 5
'        Iteration 6
'        Iteration 7
'        Iteration 8
'        Iteration 9
'        Iteration 10

설명

작업을 한 번만 시작하고 실행할 수 있습니다. 작업을 두 번째로 예약하려고 하면 예외가 발생합니다.

생성 Start 자 중 Task 하나를 호출하여 만든 작업을 실행하는 데 사용됩니다. 일반적으로 만든 태스크를 조건부로 실행하는 경우와 같이 작업 만들기를 실행에서 분리해야 하는 경우 이 작업을 수행합니다. 태스크 인스턴스화를 실행과 분리할 필요가 없는 일반적인 경우 또는 TaskFactory.StartNew 메서드의 Task.Run 오버로드를 호출하는 것이 좋습니다.

작업 작업에서 throw된 예외를 처리하는 방법에 대한 자세한 내용은 예외 처리를 참조하세요.

추가 정보

적용 대상

Start(TaskScheduler)

Task를 시작하고 지정된 TaskScheduler에 실행을 예약합니다.

public:
 void Start(System::Threading::Tasks::TaskScheduler ^ scheduler);
public void Start (System.Threading.Tasks.TaskScheduler scheduler);
member this.Start : System.Threading.Tasks.TaskScheduler -> unit
Public Sub Start (scheduler As TaskScheduler)

매개 변수

scheduler
TaskScheduler

이 작업을 연결하고 실행할 TaskScheduler입니다.

예외

scheduler 인수가 null인 경우

Task가 시작할 수 있는 상태가 아닙니다. 이미 시작되었거나, 실행되었거나, 취소되었거나 아니면 직접 일정 관리를 지원하지 않는 방식으로 만들어졌을 수 있습니다.

Task 인스턴스가 삭제되었습니다.

스케줄러가 이 작업을 큐에 대기할 수 없는 경우

설명

작업은 한 번만 시작하고 실행할 수 있습니다. 작업을 두 번째로 예약하려고 하면 예외가 발생합니다.

작업 작업에서 throw된 예외를 처리하는 방법에 대한 자세한 내용은 예외 처리를 참조하세요.

추가 정보

적용 대상