Task.Wait Task.Wait Task.Wait Task.Wait Method

정의

Task의 실행이 완료되기를 기다립니다.Waits for the Task to complete execution.

오버로드

Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan)

Task가 지정된 시간 간격 내에 실행을 완료할 때까지 기다립니다.Waits for the Task to complete execution within a specified time interval.

Wait(Int32, CancellationToken) Wait(Int32, CancellationToken) Wait(Int32, CancellationToken)

Task의 실행이 완료되기를 기다립니다.Waits for the Task to complete execution. 작업이 완료되기 전에 취소 토큰이 취소되었거나 시간 제한 간격이 경과되었으면 대기가 종료됩니다.The wait terminates if a timeout interval elapses or a cancellation token is canceled before the task completes.

Wait(CancellationToken) Wait(CancellationToken) Wait(CancellationToken)

Task의 실행이 완료되기를 기다립니다.Waits for the Task to complete execution. 작업이 완료되기 전에 취소 토큰이 취소되면 대기가 종료됩니다.The wait terminates if a cancellation token is canceled before the task completes.

Wait(Int32) Wait(Int32) Wait(Int32) Wait(Int32)

Task가 지정된 시간(밀리초) 내에 실행을 완료할 때까지 기다립니다.Waits for the Task to complete execution within a specified number of milliseconds.

Wait() Wait() Wait() Wait()

Task의 실행이 완료되기를 기다립니다.Waits for the Task to complete execution.

Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan) Wait(TimeSpan)

Task가 지정된 시간 간격 내에 실행을 완료할 때까지 기다립니다.Waits for the Task to complete execution within a specified time interval.

public:
 bool Wait(TimeSpan timeout);
public bool Wait (TimeSpan timeout);
member this.Wait : TimeSpan -> bool
Public Function Wait (timeout As TimeSpan) As Boolean

매개 변수

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

대기할 시간(밀리초)을 나타내는 TimeSpan이거나, 무한 대기하도록 -1밀리초를 나타내는 TimeSpan입니다.A TimeSpan that represents the number of milliseconds to wait, or a TimeSpan that represents -1 milliseconds to wait indefinitely.

반환

true의 실행이 할당된 시간 안에 완료되었으면 Task이고, 그렇지 않으면 false입니다.true if the Task completed execution within the allotted time; otherwise, false.

예외

timeout 은 시간 제한이 없음을 나타내는 -1밀리초 이외의 음수입니다.timeout is a negative number other than -1 milliseconds, which represents an infinite time-out. 또는-or- timeoutMaxValue보다 큰 경우timeout is greater than MaxValue.

작업이 취소되었습니다.The task was canceled. InnerExceptions 컬렉션에 TaskCanceledException 개체가 있습니다.The InnerExceptions collection contains a TaskCanceledException object.

또는-or- 작업을 실행하는 동안 예외가 발생한 경우An exception was thrown during the execution of the task. 예외나 예외에 대한 정보를 포함하는 InnerExceptions 컬렉션입니다.The InnerExceptions collection contains information about the exception or exceptions.

예제

다음 예제에서는 5 백만 0과 100 사이의 임의의 정수를 생성 하 고 해당 평균을 계산 하는 작업을 시작 합니다.The following example starts a task that generates five million random integers between 0 and 100 and computes their mean. 이 예제에서는 사용 된 Wait(TimeSpan) 150 시간 (밀리초) 내에 완료 된 애플리케이션이 기다리도록 하는 방법.The example uses the Wait(TimeSpan) method to wait for the application to complete within 150 milliseconds. 애플리케이션이 정상적으로 완료 되 면 작업에서 생성 하는 난수의 평균 및 합계를 표시 합니다.If the application completes normally, the task displays the sum and mean of the random numbers that it has generated. 시간 제한 간격이 경과할 경우 예제를 종료 하기 전에 메시지를 표시 합니다.If the timeout interval has elapsed, the example displays a message before it terminates.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task t = Task.Run( () => {
                            Random rnd = new Random();
                            long sum = 0;
                            int n = 5000000;
                            for (int ctr = 1; ctr <= n; ctr++) {
                               int number = rnd.Next(0, 101);
                               sum += number;
                            }
                            Console.WriteLine("Total:   {0:N0}", sum);
                            Console.WriteLine("Mean:    {0:N2}", sum/n);
                            Console.WriteLine("N:       {0:N0}", n);   
                         } );
     TimeSpan ts = TimeSpan.FromMilliseconds(150);
     if (! t.Wait(ts))
        Console.WriteLine("The timeout interval elapsed.");
   }
}
// The example displays output similar to the following:
//       Total:   50,015,714
//       Mean:    50.02
//       N:       1,000,000
// Or it displays the following output:
//      The timeout interval elapsed.
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As Task = Task.Run( Sub()
                                   Dim rnd As New Random()
                                   Dim sum As Long
                                   Dim n As Integer = 5000000
                                   For ctr As Integer = 1 To n
                                      Dim number As Integer = rnd.Next(0, 101)
                                      sum += number
                                   Next
                                   Console.WriteLine("Total:   {0:N0}", sum)
                                   Console.WriteLine("Mean:    {0:N2}", sum/n)
                                   Console.WriteLine("N:       {0:N0}", n)   
                                End Sub)
     Dim ts As TimeSpan = TimeSpan.FromMilliseconds(150)
     If Not t.Wait(ts) Then
        Console.WriteLine("The timeout interval elapsed.")
     End If
   End Sub
End Module
' The example displays output similar to the following:
'       Total:   50,015,714
'       Mean:    50.02
'       N:       1,000,000
' Or it displays the following output:
'       The timeout interval elapsed.

설명

Wait(TimeSpan) 호출 스레드를 현재 작업 인스턴스 중 하나가 발생할 때까지 완료를 대기 시키는 동기화 메서드입니다.Wait(TimeSpan) is a synchronization method that causes the calling thread to wait for the current task instance to complete until one of the following occurs:

  • 작업을 완료 합니다.The task completes successfully.

  • 작업 자체는 취소 되거나 예외를 throw 합니다.The task itself is canceled or throws an exception. 이 경우 처리 하는 AggregateException 예외입니다.In this case, you handle an AggregateException exception. AggregateException.InnerExceptions 속성 예외 나 예외에 대 한 세부 정보를 포함 합니다.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • 정의한 간격 timeout 경과 합니다.The interval defined by timeout elapses. 이 경우 현재 스레드의 실행을 다시 시작 하 고 메서드를 반환 false합니다.In this case, the current thread resumes execution and the method returns false.

Wait(Int32, CancellationToken) Wait(Int32, CancellationToken) Wait(Int32, CancellationToken)

Task의 실행이 완료되기를 기다립니다.Waits for the Task to complete execution. 작업이 완료되기 전에 취소 토큰이 취소되었거나 시간 제한 간격이 경과되었으면 대기가 종료됩니다.The wait terminates if a timeout interval elapses or a cancellation token is canceled before the task completes.

public:
 bool Wait(int millisecondsTimeout, System::Threading::CancellationToken cancellationToken);
public bool Wait (int millisecondsTimeout, System.Threading.CancellationToken cancellationToken);
member this.Wait : int * System.Threading.CancellationToken -> bool

매개 변수

millisecondsTimeout
Int32 Int32 Int32 Int32

대기할 시간(밀리초)이거나, 무기한 대기할 경우 Infinite(-1)입니다.The number of milliseconds to wait, or Infinite (-1) to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

작업이 완료되기를 기다리는 동안 관찰할 취소 토큰입니다.A cancellation token to observe while waiting for the task to complete.

반환

true의 실행이 할당된 시간 안에 완료되었으면 Task이고, 그렇지 않으면 false입니다.true if the Task completed execution within the allotted time; otherwise, false.

예외

cancellationToken을 취소했습니다.The cancellationToken was canceled.

millisecondsTimeout이 시간 제한 없음을 나타내는 -1 이외의 음수인 경우millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

작업이 취소되었습니다.The task was canceled. InnerExceptions 컬렉션에 TaskCanceledException 개체가 있습니다.The InnerExceptions collection contains a TaskCanceledException object.

또는-or- 작업을 실행하는 동안 예외가 발생한 경우An exception was thrown during the execution of the task. 예외나 예외에 대한 정보를 포함하는 InnerExceptions 컬렉션입니다.The InnerExceptions collection contains information about the exception or exceptions.

예제

다음 예제에서는 Wait(Int32, CancellationToken) 있는 제한 시간 값과는 취소 토큰을 제공 하는 메서드는 작업의 완료에 대 한 대기를 종료할 수 있습니다.The following example calls the Wait(Int32, CancellationToken) method to provide both a timeout value and a cancellation token that can end the wait for a task's completion. 새 스레드 시작 되 고 실행 합니다 CancelToken 메서드를 일시 중지 하 고 호출 하는 CancellationTokenSource.Cancel 취소 토큰을 취소 하는 방법.A new thread is started and executes the CancelToken method, which pauses and then calls the CancellationTokenSource.Cancel method to cancel the cancellation tokens. 작업을 다음을 실행 하 고 5 초 동안 지연 시킵니다.A task is then launched and delays for 5 seconds. Wait 메서드를 호출 하는 작업의 완료를 기다리는 및 간단한 시간 제한 값 및 취소 토큰을 모두 제공 됩니다.The Wait method is then called to wait for the task's completion and is provided both a brief timeout value and a cancellation token.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      CancellationTokenSource ts = new CancellationTokenSource();
      Thread thread = new Thread(CancelToken);
      thread.Start(ts);

      Task t = Task.Run( () => { Task.Delay(5000).Wait();
                                 Console.WriteLine("Task ended delay...");
                               });
      try {
         Console.WriteLine("About to wait completion of task {0}", t.Id);
         bool result = t.Wait(1510, ts.Token);
         Console.WriteLine("Wait completed normally: {0}", result);
         Console.WriteLine("The task status:  {0:G}", t.Status);
      }
      catch (OperationCanceledException e) {
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status);
         Thread.Sleep(4000);
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status);
         ts.Dispose();
      }
   }

   private static void CancelToken(Object obj)
   {
      Thread.Sleep(1500);
      Console.WriteLine("Canceling the cancellation token from thread {0}...",
                        Thread.CurrentThread.ManagedThreadId);
      CancellationTokenSource source = obj as CancellationTokenSource;
      if (source != null) source.Cancel();
   }
}
// The example displays output like the following if the wait is canceled by
// the cancellation token:
//    About to wait completion of task 1
//    Canceling the cancellation token from thread 3...
//    OperationCanceledException: The wait has been canceled. Task status: Running
//    Task ended delay...
//    After sleeping, the task status:  RanToCompletion
// The example displays output like the following if the wait is canceled by
// the timeout interval expiring:
//    About to wait completion of task 1
//    Wait completed normally: False
//    The task status:  Running
//    Canceling the cancellation token from thread 3...
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim ts As New CancellationTokenSource()
      Dim thread As New Thread(AddressOf CancelToken)
      thread.Start(ts)

      Dim t As Task = Task.Run( Sub()
                                   Task.Delay(5000).Wait()
                                    Console.WriteLine("Task ended delay...")
                                End Sub)
      Try
         Console.WriteLine("About to wait completion of task {0}", t.Id)
         Dim result As Boolean = t.Wait(1510, ts.Token)
         Console.WriteLine("Wait completed normally: {0}", result)
         Console.WriteLine("The task status:  {0:G}", t.Status)
      Catch e As OperationCanceledException
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status)
         Thread.Sleep(4000)
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status)
         ts.Dispose()
      End Try
   End Sub

   Private Sub CancelToken(obj As Object)
      Thread.Sleep(1500)
      Console.WriteLine("Canceling the cancellation token from thread {0}...",
                        Thread.CurrentThread.ManagedThreadId)

      If TypeOf obj Is CancellationTokenSource Then
         Dim source As CancellationTokenSource = CType(obj, CancellationTokenSource)
         source.Cancel()
      End If
   End Sub
End Module
' The example displays output like the following if the wait is canceled by
' the cancellation token:
'    About to wait completion of task 1
'    Canceling the cancellation token from thread 3...
'    OperationCanceledException: The wait has been canceled. Task status: Running
'    Task ended delay...
'    After sleeping, the task status:  RanToCompletion
' The example displays output like the following if the wait is canceled by
' the timeout interval expiring:
'    About to wait completion of task 1
'    Wait completed normally: False
'    The task status:  Running
'    Canceling the cancellation token from thread 3...

대기가 취소 토큰으로 인해 취소 되었습니다 여부 시간 제한 간격이 경과 하기 때문에 예제의 정확한 출력에 의존 하는 참고 합니다.Note that the precise output from the example depends on whether the wait was canceled because of the cancellation token or because the timeout interval elapsed.

설명

Wait(Int32, CancellationToken) 호출 스레드를 현재 작업 인스턴스 중 하나가 발생할 때까지 완료를 대기 시키는 동기화 메서드입니다.Wait(Int32, CancellationToken) is a synchronization method that causes the calling thread to wait for the current task instance to complete until one of the following occurs:

  • 작업을 완료 합니다.The task completes successfully.

  • 작업 자체는 취소 되거나 예외를 throw 합니다.The task itself is canceled or throws an exception. 이 경우 처리 하는 AggregateException 예외입니다.In this case, you handle an AggregateException exception. AggregateException.InnerExceptions 속성 예외 나 예외에 대 한 세부 정보를 포함 합니다.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • cancellationToken 취소 토큰이 취소 됩니다.The cancellationToken cancellation token is canceled. 이 경우에 대 한 호출을 Wait(Int32, CancellationToken) 메서드가 throw는 OperationCanceledException합니다.In this case, the call to the Wait(Int32, CancellationToken) method throws an OperationCanceledException.

  • 정의한 간격 millisecondsTimeout 경과 합니다.The interval defined by millisecondsTimeout elapses. 이 경우 현재 스레드의 실행을 다시 시작 하 고 메서드를 반환 false합니다.In this case, the current thread resumes execution and the method returns false.

참고

취소는 cancellationToken 취소 토큰 효과가 있습니다 실행 중인 작업에도 취소 토큰이 전달 되 고 취소를 처리 하도록 준비 됩니다.Canceling the cancellationToken cancellation token has no effect on the running task unless it has also been passed the cancellation token and is prepared to handle cancellation. 전달 된 cancellationToken 개체를이 메서드에 사용 하면 대기가 취소 될 기반 조건에 있습니다.Passing the cancellationToken object to this method simply allows the wait to be canceled based on some condition.

Wait(CancellationToken) Wait(CancellationToken) Wait(CancellationToken)

Task의 실행이 완료되기를 기다립니다.Waits for the Task to complete execution. 작업이 완료되기 전에 취소 토큰이 취소되면 대기가 종료됩니다.The wait terminates if a cancellation token is canceled before the task completes.

public:
 void Wait(System::Threading::CancellationToken cancellationToken);
public void Wait (System.Threading.CancellationToken cancellationToken);
member this.Wait : System.Threading.CancellationToken -> unit

매개 변수

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

작업이 완료되기를 기다리는 동안 관찰할 취소 토큰입니다.A cancellation token to observe while waiting for the task to complete.

예외

cancellationToken을 취소했습니다.The cancellationToken was canceled.

작업이 삭제되었습니다.The task has been disposed.

작업이 취소되었습니다.The task was canceled. InnerExceptions 컬렉션에 TaskCanceledException 개체가 있습니다.The InnerExceptions collection contains a TaskCanceledException object.

또는-or- 작업을 실행하는 동안 예외가 발생한 경우An exception was thrown during the execution of the task. 예외나 예외에 대한 정보를 포함하는 InnerExceptions 컬렉션입니다.The InnerExceptions collection contains information about the exception or exceptions.

예제

다음 예제에서는 작업의 완료에 대 한 대기를 취소 하는 취소 토큰의 간단한 사용법을 보여 줍니다.The following example illustrates the simple use of a cancellation token to cancel waiting for a task's completion. 작업 호출을 시작 합니다 CancellationTokenSource.Cancel 5 초 동안 취소 토큰 소스의 취소 토큰 및 다음 지연 하는 방법입니다.A task is launched, calls the CancellationTokenSource.Cancel method to cancel any of the token source's cancellation tokens, and then delays for five seconds. 참고 작업 자체는 취소 토큰이 전달 되지 않은 하 고는 취소할 수 없습니다.Note that the task itself has not been passed the cancellation token and is not cancelable. 작업을 호출 하는 애플리케이션 스레드에 Task.Wait 메서드는 작업이 완료 될 때까지 기다리는를 있지만 대기 취소 토큰이 취소 되 면 및 취소 OperationCanceledException throw 됩니다.The application thread calls the task's Task.Wait method to wait for the task to complete, but the wait is canceled once the cancellation token is cancelled and an OperationCanceledException is thrown. 예외 처리기는 예외를 보고 하 고 6 초 동안 대기 합니다.The exception handler reports the exception and then sleeps for six seconds. 해당 지연 작업을 완료 하면 예제의 출력에서 볼 수 있듯이 RanToCompletion 상태입니다.As the output from the example shows, that delay allows the task to complete in the RanToCompletion state.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      CancellationTokenSource ts = new CancellationTokenSource();

      Task t = Task.Run( () => { Console.WriteLine("Calling Cancel...");
                                 ts.Cancel();
                                 Task.Delay(5000).Wait();
                                 Console.WriteLine("Task ended delay...");
                               });
      try {
         Console.WriteLine("About to wait for the task to complete...");
         t.Wait(ts.Token);
      }
      catch (OperationCanceledException e) {
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status);
         Thread.Sleep(6000);
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status);
      }
      ts.Dispose();
   }
}
// The example displays output like the following:
//    About to wait for the task to complete...
//    Calling Cancel...
//    OperationCanceledException: The wait has been canceled. Task status: Running
//    Task ended delay...
//    After sleeping, the task status:  RanToCompletion
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim ts As New CancellationTokenSource()

      Dim t = Task.Run( Sub()
                           Console.WriteLine("Calling Cancel...")
                           ts.Cancel()
                           Task.Delay(5000).Wait()
                           Console.WriteLine("Task ended delay...")
                        End Sub)
      Try
         Console.WriteLine("About to wait for the task to complete...")
         t.Wait(ts.Token)
      Catch e As OperationCanceledException
         Console.WriteLine("{0}: The wait has been canceled. Task status: {1:G}",
                           e.GetType().Name, t.Status)
         Thread.Sleep(6000)
         Console.WriteLine("After sleeping, the task status:  {0:G}", t.Status)
      End Try
      ts.Dispose()
   End Sub
End Module
' The example displays output like the following:
'    About to wait for the task to complete...
'    Calling Cancel...
'    OperationCanceledException: The wait has been canceled. Task status: Running
'    Task ended delay...
'    After sleeping, the task status:  RanToCompletion

설명

Wait(CancellationToken) 메서드 생성을 취소할 수 있는 대기 하면 즉, 현재 스레드를 다음 중 하나가 발생할 때까지 대기 합니다.The Wait(CancellationToken) method creates a cancelable wait; that is, it causes the current thread to wait until one of the following occurs:

참고

취소는 cancellationToken 취소 토큰 효과가 있습니다 실행 중인 작업에도 취소 토큰이 전달 되 고 취소를 처리 하도록 준비 됩니다.Canceling the cancellationToken cancellation token has no effect on the running task unless it has also been passed the cancellation token and is prepared to handle cancellation. 전달 된 cancellationToken 개체를이 메서드에 사용 하면 취소할 대기 합니다.Passing the cancellationToken object to this method simply allows the wait to be canceled.

Wait(Int32) Wait(Int32) Wait(Int32) Wait(Int32)

Task가 지정된 시간(밀리초) 내에 실행을 완료할 때까지 기다립니다.Waits for the Task to complete execution within a specified number of milliseconds.

public:
 bool Wait(int millisecondsTimeout);
public bool Wait (int millisecondsTimeout);
member this.Wait : int -> bool
Public Function Wait (millisecondsTimeout As Integer) As Boolean

매개 변수

millisecondsTimeout
Int32 Int32 Int32 Int32

대기할 시간(밀리초)이거나, 무기한 대기할 경우 Infinite(-1)입니다.The number of milliseconds to wait, or Infinite (-1) to wait indefinitely.

반환

true의 실행이 할당된 시간 안에 완료되었으면 Task이고, 그렇지 않으면 false입니다.true if the Task completed execution within the allotted time; otherwise, false.

예외

millisecondsTimeout이 시간 제한 없음을 나타내는 -1 이외의 음수인 경우millisecondsTimeout is a negative number other than -1, which represents an infinite time-out.

작업이 취소되었습니다.The task was canceled. InnerExceptions 컬렉션에 TaskCanceledException 개체가 있습니다.The InnerExceptions collection contains a TaskCanceledException object.

또는-or- 작업을 실행하는 동안 예외가 발생한 경우An exception was thrown during the execution of the task. 예외나 예외에 대한 정보를 포함하는 InnerExceptions 컬렉션입니다.The InnerExceptions collection contains information about the exception or exceptions.

예제

다음 예제에서는 5 백만 0과 100 사이의 임의의 정수를 생성 하 고 해당 평균을 계산 하는 작업을 시작 합니다.The following example starts a task that generates five million random integers between 0 and 100 and computes their mean. 이 예제에서는 사용 된 Wait(Int32) 150 시간 (밀리초) 내에 완료 된 애플리케이션이 기다리도록 하는 방법.The example uses the Wait(Int32) method to wait for the application to complete within 150 milliseconds. 애플리케이션이 정상적으로 완료 되 면 작업에서 생성 하는 난수의 평균 및 합계를 표시 합니다.If the application completes normally, the task displays the sum and mean of the random numbers that it has generated. 시간 제한 간격이 경과할 경우 예제를 종료 하기 전에 메시지를 표시 합니다.If the timeout interval has elapsed, the example displays a message before it terminates.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task t = Task.Run( () => {
                            Random rnd = new Random();
                            long sum = 0;
                            int n = 5000000;
                            for (int ctr = 1; ctr <= n; ctr++) {
                               int number = rnd.Next(0, 101);
                               sum += number;
                            }
                            Console.WriteLine("Total:   {0:N0}", sum);
                            Console.WriteLine("Mean:    {0:N2}", sum/n);
                            Console.WriteLine("N:       {0:N0}", n);   
                         } );
     if (! t.Wait(150))
        Console.WriteLine("The timeout interval elapsed.");
   }
}
// The example displays output similar to the following:
//       Total:   50,015,714
//       Mean:    50.02
//       N:       1,000,000
// Or it displays the following output:
//      The timeout interval elapsed.
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As Task = Task.Run( Sub()
                                   Dim rnd As New Random()
                                   Dim sum As Long
                                   Dim n As Integer = 5000000
                                   For ctr As Integer = 1 To n
                                      Dim number As Integer = rnd.Next(0, 101)
                                      sum += number
                                   Next
                                   Console.WriteLine("Total:   {0:N0}", sum)
                                   Console.WriteLine("Mean:    {0:N2}", sum/n)
                                   Console.WriteLine("N:       {0:N0}", n)   
                                End Sub)
     If Not t.Wait(150) Then
        Console.WriteLine("The timeout interval elapsed.")
     End If
   End Sub
End Module
' The example displays output similar to the following:
'       Total:   50,015,714
'       Mean:    50.02
'       N:       1,000,000
' Or it displays the following output:
'       The timeout interval elapsed.

설명

Wait(Int32) 호출 스레드를 현재 작업 인스턴스 중 하나가 발생할 때까지 완료를 대기 시키는 동기화 메서드입니다.Wait(Int32) is a synchronization method that causes the calling thread to wait for the current task instance to complete until one of the following occurs:

  • 작업을 완료 합니다.The task completes successfully.

  • 작업 자체는 취소 되거나 예외를 throw 합니다.The task itself is canceled or throws an exception. 이 경우 처리 하는 AggregateException 예외입니다.In this case, you handle an AggregateException exception. AggregateException.InnerExceptions 속성 예외 나 예외에 대 한 세부 정보를 포함 합니다.The AggregateException.InnerExceptions property contains details about the exception or exceptions.

  • 정의한 간격 millisecondsTimeout 경과 합니다.The interval defined by millisecondsTimeout elapses. 이 경우 현재 스레드의 실행을 다시 시작 하 고 메서드를 반환 false합니다.In this case, the current thread resumes execution and the method returns false.

Wait() Wait() Wait() Wait()

Task의 실행이 완료되기를 기다립니다.Waits for the Task to complete execution.

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

예외

작업이 취소되었습니다.The task was canceled. InnerExceptions 컬렉션에 TaskCanceledException 개체가 있습니다.The InnerExceptions collection contains a TaskCanceledException object.

또는-or- 작업을 실행하는 동안 예외가 발생한 경우An exception was thrown during the execution of the task. 예외나 예외에 대한 정보를 포함하는 InnerExceptions 컬렉션입니다.The InnerExceptions collection contains information about the exception or exceptions.

예제

다음 예제에서는 1 백만 0과 100 사이의 임의의 정수를 생성 하 고 해당 평균을 계산 하는 작업을 시작 합니다.The following example starts a task that generates one million random integers between 0 and 100 and computes their mean. 이 예제에서는 사용 된 Wait 애플리케이션이 종료 되기 전에 작업이 완료 되도록 하는 방법.The example uses the Wait method to ensure that the task completes before the application terminates. 이 고, 그렇지 콘솔 애플리케이션을 이기 때문에 예제에서는 태스크를 컴퓨팅 하 고 평균을 표시할 수 전에 종료 됩니다.Otherwise, because this is a console application, the example would terminate before the task can compute and display the mean.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task t = Task.Run( () => {
                            Random rnd = new Random();
                            long sum = 0;
                            int n = 1000000;
                            for (int ctr = 1; ctr <= n; ctr++) {
                               int number = rnd.Next(0, 101);
                               sum += number;
                            }
                            Console.WriteLine("Total:   {0:N0}", sum);
                            Console.WriteLine("Mean:    {0:N2}", sum/n);
                            Console.WriteLine("N:       {0:N0}", n);   
                         } );
     t.Wait();
   }
}
// The example displays output similar to the following:
//       Total:   50,015,714
//       Mean:    50.02
//       N:       1,000,000
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t As Task = Task.Run( Sub()
                                   Dim rnd As New Random()
                                   Dim sum As Long
                                   Dim n As Integer = 1000000
                                   For ctr As Integer = 1 To n
                                      Dim number As Integer = rnd.Next(0, 101)
                                      sum += number
                                   Next
                                   Console.WriteLine("Total:   {0:N0}", sum)
                                   Console.WriteLine("Mean:    {0:N2}", sum/n)
                                   Console.WriteLine("N:       {0:N0}", n)   
                                End Sub)
     t.Wait()
   End Sub
End Module
' The example displays output similar to the following:
'       Total:   50,015,714
'       Mean:    50.02
'       N:       1,000,000

설명

Wait 호출 스레드가 현재 작업이 완료 될 때까지 대기 하는 동기화 메서드입니다.Wait is a synchronization method that causes the calling thread to wait until the current task has completed. 현재 작업 실행 시작 되지 않은 경우 Wait 메서드 스케줄러에서 작업을 제거 하 고 현재 스레드에서 인라인으로 실행 하려고 합니다.If the current task has not started execution, the Wait method attempts to remove the task from the scheduler and execute it inline on the current thread. 이렇게 할 수 없는 경우 또는 현재 작업 실행이 이미 시작 하는 경우 작업이 완료 될 때까지 호출 스레드를 차단 합니다.If it is unable to do that, or if the current task has already started execution, it blocks the calling thread until the task completes. 자세한 내용은 Task.Wait 및 "인라인" 에서 Parallel Programming with.NET 블로그.For more information, see Task.Wait and "Inlining" in the Parallel Programming with .NET blog.

추가 정보

적용 대상