Task.Start メソッド

定義

Task を開始します。

オーバーロード

Start()

現在の TaskTaskScheduler の実行をスケジュールし、それを開始します。

Start(TaskScheduler)

指定された TaskTaskScheduler の実行をスケジュールし、それを開始します。

Start()

現在の TaskTaskScheduler の実行をスケジュールし、それを開始します。

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

例外

Task インスタンスは破棄されています。

Task は、開始する有効な状態にはありません。 既に開始、実行、またはキャンセルされたか、ダイレクト スケジューリングをサポートしない方法で作成された可能性があります。

次の例では、コンストラクターを呼び出し Task(Action) Task て、タスク id とマネージスレッド ID を表示する新しいオブジェクトをインスタンス化し、ループを実行します。 次に、メソッドを呼び出して 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 ます。 これは通常、作成したタスクを条件付きで実行する場合など、タスクの作成を実行から分離する必要がある場合に行います。 タスクのインスタンス化を実行から分離する必要がない場合の一般的なケースとして、メソッドまたはメソッドのオーバーロードを呼び出すことをお勧めし Task.Run TaskFactory.StartNew ます。

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

こちらもご覧ください

適用対象

Start(TaskScheduler)

指定された TaskTaskScheduler の実行をスケジュールし、それを開始します。

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 インスタンスは破棄されています。

スケジューラは、このタスクをキューに入れられませんでした。

注釈

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

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

こちらもご覧ください

適用対象