Task.Delay Task.Delay Task.Delay Task.Delay Method

정의

시간 지연 후 완료되는 작업을 만듭니다.Creates a task that will complete after a time delay.

오버로드

Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken)

지정된 시간 간격 후 완료되는 취소 가능 작업을 만듭니다.Creates a cancellable task that completes after a specified time interval.

Delay(Int32, CancellationToken) Delay(Int32, CancellationToken) Delay(Int32, CancellationToken)

지정된 시간(밀리초) 후에 완료되는 취소 가능한 작업을 만듭니다.Creates a cancellable task that completes after a specified number of milliseconds.

Delay(Int32) Delay(Int32) Delay(Int32) Delay(Int32)

지정된 시간(밀리초) 후에 완료되는 작업을 만듭니다.Creates a task that completes after a specified number of milliseconds.

Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan)

지정된 시간 간격 후 완료되는 작업을 만듭니다.Creates a task that completes after a specified time interval.

Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken) Delay(TimeSpan, CancellationToken)

지정된 시간 간격 후 완료되는 취소 가능 작업을 만듭니다.Creates a cancellable task that completes after a specified time interval.

public:
 static System::Threading::Tasks::Task ^ Delay(TimeSpan delay, System::Threading::CancellationToken cancellationToken);
public static System.Threading.Tasks.Task Delay (TimeSpan delay, System.Threading.CancellationToken cancellationToken);
static member Delay : TimeSpan * System.Threading.CancellationToken -> System.Threading.Tasks.Task

매개 변수

delay
TimeSpan TimeSpan TimeSpan TimeSpan

반환된 작업이 완료되기 전에 대기하는 시간 범위입니다. TimeSpan.FromMilliseconds(-1)는 무기한 대기를 나타냅니다.The time span to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

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

반환

시간 지연을 나타내는 작업입니다.A task that represents the time delay.

예외

delayTimeSpan.FromMilliseconds(-1) 이외의 음의 시간 간격을 나타냅니다.delay represents a negative time interval other than TimeSpan.FromMilliseconds(-1).

또는-or- delay 인수의 TotalMilliseconds 속성은 MaxValue보다 큽니다.The delay argument's TotalMilliseconds property is greater than MaxValue.

작업이 취소되었습니다.The task has been canceled.

제공된 cancellationToken가 이미 삭제된 경우The provided cancellationToken has already been disposed.

예제

다음 예제에서는 호출을 포함 하는 작업을 시작 합니다 Delay(TimeSpan, CancellationToken) 1.5 초 지연 메서드.The following example launches a task that includes a call to the Delay(TimeSpan, CancellationToken) method with a 1.5 second delay. 지연 간격은 경과 하기 전에 토큰이 취소 됩니다.Before the delay interval elapses, the token is cancelled. 예제의 출력에 따르면, 결과적으로, TaskCanceledException 이 throw 및 작업 Status 속성이 Canceled합니다.The output from the example shows that, as a result, a TaskCanceledException is thrown, and the tasks' Status property is set to Canceled.

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

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

      var t = Task.Run(async delegate
              {
                 await Task.Delay(TimeSpan.FromSeconds(1.5), source.Token);
                 return 42;
              });
      source.Cancel();
      try {
         t.Wait();
      }
      catch (AggregateException ae) {
         foreach (var e in ae.InnerExceptions)
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
      }
      Console.Write("Task t Status: {0}", t.Status);
      if (t.Status == TaskStatus.RanToCompletion)
         Console.Write(", Result: {0}", t.Result);
      source.Dispose();
   }
}
// The example displays output like the following:
//       TaskCanceledException: A task was canceled.
//       Task t Status: Canceled
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim source As New CancellationTokenSource()
      
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(TimeSpan.FromSeconds(1.5),
                                                 source.Token)
                                Return 42
                       End Function)
      source.Cancel()
      Try
         t.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
         Next
      End Try
      Console.Write("Task t Status: {0}", t.Status)
      If t.Status = TaskStatus.RanToCompletion Then
         Console.Write(", Result: {0}", t.Result)
      End If
      source.Dispose()
   End Sub
End Module
' The example displays output like the following:
'       TaskCanceledException: A task was canceled.
'       Task t Status: Canceled

이 예제에서는 잠재적인 경합 조건을 포함 하는 참고: 토큰이 취소 되 면 지연을 비동기적으로 실행 하는 작업에 따라 다릅니다.Note that this example includes a potential race condition: it depends on the task asynchronously executing the delay when the token is cancelled. 1.5 두 번째 호출에서 지연 되지만 Delay(TimeSpan, CancellationToken) 메서드를 사용 하면 가정 가능성이, 그럼에도 불구 하 고 가능는에 대 한 호출을 Delay(TimeSpan, CancellationToken) 메서드는 토큰은 취소 전에 반환할 수 있습니다.Although the 1.5 second delay from the call to the Delay(TimeSpan, CancellationToken) method makes that assumption likely, it is nevertheless possible that the call to the Delay(TimeSpan, CancellationToken) method could return before the token is cancelled. 이런 경우 예제는 다음 출력을 생성합니다.In that case, the example produces the following output:

Task t Status: RanToCompletion, Result: 42  

설명

취소 토큰, 지정 된 시간 지연이 전에 신호를 받는 경우는 TaskCanceledException 예외 결과 및 작업에서 완료 되는 Canceled 상태입니다.If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the Canceled state. 작업이 완료 되 고, 그렇지는 RanToCompletion 지정된 시간 지연 기간이 경과 되 면 상태입니다.Otherwise, the task is completed in the RanToCompletion state once the specified time delay has elapsed.

사용 시나리오 및 추가 예제에 대 한 설명서를 참조 하십시오.는 Delay(Int32) 오버 로드 합니다.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

이 메서드는 시스템 클록에 따라 달라 집니다.This method depends on the system clock. 즉, 지연 시간 경우 시스템 클록의 해상도 용량이 약 됩니다는 delay 인수를 사용 하는 Windows 시스템에서 약 15 밀리초는 시스템 시계의 정밀도 보다 작습니다.This means that the time delay will approximately equal the resolution of the system clock if the delay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

Delay(Int32, CancellationToken) Delay(Int32, CancellationToken) Delay(Int32, CancellationToken)

지정된 시간(밀리초) 후에 완료되는 취소 가능한 작업을 만듭니다.Creates a cancellable task that completes after a specified number of milliseconds.

public:
 static System::Threading::Tasks::Task ^ Delay(int millisecondsDelay, System::Threading::CancellationToken cancellationToken);
public static System.Threading.Tasks.Task Delay (int millisecondsDelay, System.Threading.CancellationToken cancellationToken);
static member Delay : int * System.Threading.CancellationToken -> System.Threading.Tasks.Task

매개 변수

millisecondsDelay
Int32 Int32 Int32 Int32

반환된 작업을 완료하기 전에 대기하는 시간(밀리초)입니다. -1은 무기한 대기를 나타냅니다.The number of milliseconds to wait before completing the returned task, or -1 to wait indefinitely.

cancellationToken
CancellationToken CancellationToken CancellationToken CancellationToken

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

반환

시간 지연을 나타내는 작업입니다.A task that represents the time delay.

예외

millisecondsDelay 인수가 -1보다 작습니다.The millisecondsDelay argument is less than -1.

작업이 취소되었습니다.The task has been canceled.

제공된 cancellationToken가 이미 삭제된 경우The provided cancellationToken has already been disposed.

예제

다음 예제에서는 호출을 포함 하는 작업을 시작 합니다 Delay(Int32, CancellationToken) 1 초 지연 메서드.The following example launches a task that includes a call to the Delay(Int32, CancellationToken) method with a one second delay. 지연 간격은 경과 하기 전에 토큰이 취소 됩니다.Before the delay interval elapses, the token is cancelled. 예제의 출력에 따르면, 결과적으로, TaskCanceledException 이 throw 및 작업 Status 속성이 Canceled합니다.The output from the example shows that, as a result, a TaskCanceledException is thrown, and the tasks' Status property is set to Canceled.

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

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

      var t = Task.Run(async delegate
              {
                 await Task.Delay(1000, source.Token);
                 return 42;
              });
      source.Cancel();
      try {
         t.Wait();
      }
      catch (AggregateException ae) {
         foreach (var e in ae.InnerExceptions)
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message);
      }
      Console.Write("Task t Status: {0}", t.Status);
      if (t.Status == TaskStatus.RanToCompletion)
         Console.Write(", Result: {0}", t.Result);
      source.Dispose();
   }
}
// The example displays the following output:
//       TaskCanceledException: A task was canceled.
//       Task t Status: Canceled
Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim source As New CancellationTokenSource()
      
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(1000, source.Token)
                                Return 42
                       End Function)
      source.Cancel()
      Try
         t.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
         Next
      End Try
      Console.Write("Task t Status: {0}", t.Status)
      If t.Status = TaskStatus.RanToCompletion Then
         Console.Write(", Result: {0}", t.Result)
      End If
      source.Dispose()
   End Sub
End Module
' The example displays the following output:
'       TaskCanceledException: A task was canceled.
'       Task t Status: Canceled

설명

취소 토큰, 지정 된 시간 지연이 전에 신호를 받는 경우는 TaskCanceledException 예외 결과 및 작업에서 완료 되는 Canceled 상태입니다.If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the Canceled state. 작업이 완료 되 고, 그렇지는 RanToCompletion 지정된 시간 지연 기간이 경과 되 면 상태입니다.Otherwise, the task is completed in the RanToCompletion state once the specified time delay has elapsed.

사용 시나리오 및 추가 예제에 대 한 설명서를 참조 하십시오.는 Delay(Int32) 오버 로드 합니다.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

이 메서드는 시스템 클록에 따라 달라 집니다.This method depends on the system clock. 즉, 지연 시간 경우 시스템 클록의 해상도 용량이 약 됩니다는 millisecondsDelay 인수를 사용 하는 Windows 시스템에서 약 15 밀리초는 시스템 시계의 정밀도 보다 작습니다.This means that the time delay will approximately equal the resolution of the system clock if the millisecondsDelay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

Delay(Int32) Delay(Int32) Delay(Int32) Delay(Int32)

지정된 시간(밀리초) 후에 완료되는 작업을 만듭니다.Creates a task that completes after a specified number of milliseconds.

public:
 static System::Threading::Tasks::Task ^ Delay(int millisecondsDelay);
public static System.Threading.Tasks.Task Delay (int millisecondsDelay);
static member Delay : int -> System.Threading.Tasks.Task
Public Shared Function Delay (millisecondsDelay As Integer) As Task

매개 변수

millisecondsDelay
Int32 Int32 Int32 Int32

반환된 작업을 완료하기 전에 대기하는 시간(밀리초)입니다. -1은 무기한 대기를 나타냅니다.The number of milliseconds to wait before completing the returned task, or -1 to wait indefinitely.

반환

시간 지연을 나타내는 작업입니다.A task that represents the time delay.

예외

millisecondsDelay 인수가 -1보다 작습니다.The millisecondsDelay argument is less than -1.

예제

다음 예제에서는의 간단한 사용법을 보여 줍니다는 Delay 메서드.The following example shows a simple use of the Delay method.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = Task.Run(async delegate
              {
                 await Task.Delay(1000);
                 return 42;
              });
      t.Wait();
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result);
   }
}
// The example displays the following output:
//        Task t Status: RanToCompletion, Result: 42
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(1000)
                                Return 42
                       End Function)
      t.Wait()
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result)
   End Sub
End Module
' The example displays the following output:
'       Task t Status: RanToCompletion, Result: 42

설명

Delay 메서드는 일반적으로 데 지정된 된 시간 간격에 대 한 모든 작업 또는 작업의 일부를 지연 합니다.The Delay method is typically used to delay the operation of all or part of a task for a specified time interval. 가장 일반적으로 시간 지연이 되었습니다.Most commonly, the time delay is introduced:

  • 에 다음 예제와 같이 작업의 시작 부분을 보여 줍니다.At the beginning of the task, as the following example shows.

    Stopwatch sw = Stopwatch.StartNew();
    var delay = Task.Delay(1000).ContinueWith(_ =>
                               { sw.Stop();
                                 return sw.ElapsedMilliseconds; } );
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay.Result);
    // The example displays output like the following:
    //        Elapsed milliseconds: 1013
    
    Dim sw As Stopwatch = Stopwatch.StartNew()
    Dim delay1 = Task.Delay(1000)
    Dim delay2 = delay1.ContinueWith( Function(antecedent)
                            sw.Stop()
                            Return sw.ElapsedMilliseconds
                          End Function)
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay2.Result)
    ' The example displays output like the following:
    '        Elapsed milliseconds: 1013
    
  • 사용 하는 동안 작업 실행 중입니다.Sometime while the task is executing. 이 경우에 대 한 호출을 Delay 메서드는 태스크 내에서 자식 작업으로 다음 예제와 같이 실행 합니다.In this case, the call to the Delay method executes as a child task within a task, as the following example shows. 호출 하는 작업 이후에 합니다 Delay 메서드를 비동기적으로 실행, 부모 작업을 사용 하 여 완료할 때까지 기다려야 합니다 await 키워드입니다.Note that since the task that calls the Delay method executes asynchronously, the parent task must wait for it to complete by using the await keyword.

    var delay = Task.Run( async () => { Stopwatch sw = Stopwatch.StartNew();
                                        await Task.Delay(2500);
                                        sw.Stop();
                                        return sw.ElapsedMilliseconds; });
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay.Result);
    // The example displays output like the following:
    //        Elapsed milliseconds: 2501
    
    Dim delay = Task.Run( Async Function()
                             Dim sw As Stopwatch = Stopwatch.StartNew()
                             Await Task.Delay(2500)
                             sw.Stop()
                             Return sw.ElapsedMilliseconds
                          End Function )
    
    Console.WriteLine("Elapsed milliseconds: {0}", delay.Result)
    ' The example displays output like the following:
    '        Elapsed milliseconds: 2501
    

지정 된 시간 지연 후 작업이 완료 되는 RanToCompletion 상태입니다.After the specified time delay, the task is completed in the RanToCompletion state.

이 메서드는 시스템 클록에 따라 달라 집니다.This method depends on the system clock. 즉, 지연 시간 경우 시스템 클록의 해상도 용량이 약 됩니다는 millisecondsDelay 인수를 사용 하는 Windows 시스템에서 약 15 밀리초는 시스템 시계의 정밀도 보다 작습니다.This means that the time delay will approximately equal the resolution of the system clock if the millisecondsDelay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan) Delay(TimeSpan)

지정된 시간 간격 후 완료되는 작업을 만듭니다.Creates a task that completes after a specified time interval.

public:
 static System::Threading::Tasks::Task ^ Delay(TimeSpan delay);
public static System.Threading.Tasks.Task Delay (TimeSpan delay);
static member Delay : TimeSpan -> System.Threading.Tasks.Task
Public Shared Function Delay (delay As TimeSpan) As Task

매개 변수

delay
TimeSpan TimeSpan TimeSpan TimeSpan

반환된 작업이 완료되기 전에 대기하는 시간 범위입니다. TimeSpan.FromMilliseconds(-1)는 무기한 대기를 나타냅니다.The time span to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely.

반환

시간 지연을 나타내는 작업입니다.A task that represents the time delay.

예외

delayTimeSpan.FromMilliseconds(-1) 이외의 음의 시간 간격을 나타냅니다.delay represents a negative time interval other than TimeSpan.FromMilliseconds(-1).

또는-or- delay 인수의 TotalMilliseconds 속성은 MaxValue보다 큽니다.The delay argument's TotalMilliseconds property is greater than MaxValue.

예제

다음 예제에서는의 간단한 사용법을 보여 줍니다는 Delay 메서드.The following example shows a simple use of the Delay method.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var t = Task.Run(async delegate
              {
                 await Task.Delay(TimeSpan.FromSeconds(1.5));
                 return 42;
              });
      t.Wait();
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result);
   }
}
// The example displays the following output:
//        Task t Status: RanToCompletion, Result: 42
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim t = Task.Run(Async Function()
                                Await Task.Delay(TimeSpan.FromSeconds(1.5))
                                Return 42
                       End Function)
      t.Wait()
      Console.WriteLine("Task t Status: {0}, Result: {1}",
                        t.Status, t.Result)
   End Sub
End Module
' The example displays the following output:
'       Task t Status: RanToCompletion, Result: 42

설명

작업이 완료 되는 지정 된 시간 지연 후 RanToCompletion 상태입니다.After the specified time delay, the task is completed in RanToCompletion state.

사용 시나리오 및 추가 예제에 대 한 설명서를 참조 하십시오.는 Delay(Int32) 오버 로드 합니다.For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

이 메서드는 시스템 클록에 따라 달라 집니다.This method depends on the system clock. 즉, 지연 시간 경우 시스템 클록의 해상도 용량이 약 됩니다는 delay 인수를 사용 하는 Windows 시스템에서 약 15 밀리초는 시스템 시계의 정밀도 보다 작습니다.This means that the time delay will approximately equal the resolution of the system clock if the delay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

적용 대상