Task.Start メソッド

定義

Task を開始します。Starts the Task.

オーバーロード

Start()

現在の TaskTaskScheduler の実行をスケジュールし、それを開始します。Starts the Task, scheduling it for execution to the current TaskScheduler.

Start(TaskScheduler)

指定された TaskTaskScheduler の実行をスケジュールし、それを開始します。Starts the Task, scheduling it for execution to the specified TaskScheduler.

Start()

現在の TaskTaskScheduler の実行をスケジュールし、それを開始します。Starts the Task, scheduling it for execution to the current TaskScheduler.

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

例外

Task インスタンスは破棄されています。The Task instance has been disposed.

Task は、開始する有効な状態にはありません。The Task is not in a valid state to be started. 既に開始、実行、またはキャンセルされたか、ダイレクト スケジューリングをサポートしない方法で作成された可能性があります。It may have already been started, executed, or canceled, or it may have been created in a manner that doesn't support direct scheduling.

次の例では、Task(Action) コンストラクターを呼び出して、タスク ID とマネージスレッド ID を表示してループを実行する新しい Task オブジェクトをインスタンス化します。The following example calls the Task(Action) constructor to instantiate a new Task object that displays its task ID and managed thread ID and then executes a loop. 次に、Start メソッドを呼び出してタスクを実行します。It then calls the Start method to execute the task. これはコンソールアプリであるため、タスクが実行を終了する前にアプリが終了しないようにするには、Wait メソッドを呼び出す必要があります。Since this is a console app, the call to the Wait method is necessary to prevent the app from terminating before the task finishes execution.

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回だけ実行することができます。A task may be started and run only once. タスクを2回目にスケジュールしようとすると、例外が発生します。Any attempts to schedule a task a second time will result in an exception.

@No__t-0 は、@no__t 1 つのコンストラクターのいずれかを呼び出すことによって作成されたタスクを実行するために使用されます。The Start is used to execute a task that has been created by calling one of the Task constructors. これは通常、作成したタスクを条件付きで実行する場合など、タスクの作成を実行から分離する必要がある場合に行います。Typically, you do this when you need to separate the task's creation from its execution, such as when you conditionally execute tasks that you've created. タスクのインスタンス化を実行から分離する必要がない一般的なケースの場合は、Task.Run または TaskFactory.StartNew メソッドのオーバーロードを呼び出すことをお勧めします。For the more common case in which you don't need to separate task instantiation from execution, we recommend that you call an overload of the Task.Run or TaskFactory.StartNew method.

タスク操作によってスローされる例外の処理の詳細については、「例外処理」を参照してください。For information on handling exceptions thrown by task operations, see Exception Handling.

こちらもご覧ください

Start(TaskScheduler)

指定された TaskTaskScheduler の実行をスケジュールし、それを開始します。Starts the Task, scheduling it for execution to the specified 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

このタスクを関連付けて実行する TaskSchedulerThe TaskScheduler with which to associate and execute this task.

例外

scheduler 引数が null です。The scheduler argument is null.

Task は、開始する有効な状態にはありません。The Task is not in a valid state to be started. 既に開始、実行、またはキャンセルされたか、ダイレクト スケジューリングをサポートしない方法で作成された可能性があります。It may have already been started, executed, or canceled, or it may have been created in a manner that doesn't support direct scheduling.

Task インスタンスは破棄されています。The Task instance has been disposed.

スケジューラは、このタスクをキューに入れられませんでした。The scheduler was unable to queue this task.

注釈

タスクを開始して実行できるのは一度だけです。A task may only be started and run only once. タスクを2回目にスケジュールしようとすると、例外が発生します。Any attempts to schedule a task a second time will result in an exception.

タスク操作によってスローされる例外の処理の詳細については、「例外処理」を参照してください。For information on handling exceptions thrown by task operations, see Exception Handling.

こちらもご覧ください

適用対象