Task.Start メソッド

定義

Taskを開始します。

オーバーロード

名前 説明
Start()

Taskを開始し、現在のTaskSchedulerへの実行をスケジュールします。

Start(TaskScheduler)

Taskを開始し、指定したTaskSchedulerに実行するようにスケジュールします。

Start()

ソース:
Task.cs
ソース:
Task.cs
ソース:
Task.cs
ソース:
Task.cs
ソース:
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

注釈

タスクは 1 回だけ開始して実行できます。 タスクを 2 回目にスケジュールしようとすると、例外が発生します。

Startは、Task コンストラクターのいずれかを呼び出すことによって作成されたタスクを実行するために使用されます。 通常、これは、タスクの作成を実行から分離する必要がある場合 (作成したタスクを条件付きで実行する場合など) に行います。 タスクのインスタンス化を実行から分離する必要がない一般的なケースでは、 Task.Run または TaskFactory.StartNew メソッドのオーバーロードを呼び出することをお勧めします。

タスク操作によってスローされる例外の処理については、「 例外処理」を参照してください。

こちらもご覧ください

適用対象

Start(TaskScheduler)

ソース:
Task.cs
ソース:
Task.cs
ソース:
Task.cs
ソース:
Task.cs
ソース:
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 インスタンスが破棄されました。

スケジューラはこのタスクをキューに登録できませんでした。

注釈

タスクは 1 回だけ開始して実行できます。 タスクを 2 回目にスケジュールしようとすると、例外が発生します。

タスク操作によってスローされる例外の処理については、「 例外処理」を参照してください。

こちらもご覧ください

適用対象