Task.Start メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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
注釈
タスクは 1 回だけ開始して実行できます。 2 回目にタスクをスケジュールしようとすると、例外が発生します。
これは Start 、いずれかのコンストラクターを呼び出すことによって作成されたタスクを Task 実行するために使用されます。 通常、タスクの作成と実行を分離する必要がある場合 (作成したタスクを条件付きで実行する場合など) にこれを行います。 タスクのインスタンス化を実行から分離する必要がない一般的なケースでは、or TaskFactory.StartNew メソッドのTask.Runオーバーロードを呼び出することをお勧めします。
タスク操作によってスローされる例外の処理については、「 例外処理」を参照してください。
こちらもご覧ください
適用対象
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 インスタンスは破棄されています。
スケジューラは、このタスクをキューに入れられませんでした。
注釈
タスクは 1 回だけ開始して実行できます。 2 回目にタスクをスケジュールしようとすると、例外が発生します。
タスク操作によってスローされる例外の処理については、「 例外処理」を参照してください。