Task.Start 메서드

정의

를 시작합니다 Task.

오버로드

Name Description
Start()

현재 Task실행TaskScheduler되도록 예약하여 시작합니다.

Start(TaskScheduler)

Task시작하고 지정된 실행되도록 예약합니다 TaskScheduler.

Start()

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

현재 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
open System.Threading
open System.Threading.Tasks

let t =
    new Task(fun () ->
        printfn $"Task {Task.CurrentId} running on thread {Thread.CurrentThread.ManagedThreadId}"

        for i = 1 to 10 do
            printfn $"   Iteration {i}")

t.Start()
t.Wait() |> ignore

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

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

추가 정보

적용 대상

Start(TaskScheduler)

Source:
Task.cs
Source:
Task.cs
Source:
Task.cs
Source:
Task.cs
Source:
Task.cs

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된 예외를 처리하는 방법에 대한 자세한 내용은 예외 처리를 참조하세요.

추가 정보

적용 대상