Task.Wait Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Task Ожидает завершения выполнения.
Перегрузки
| Имя | Описание |
|---|---|
| Wait(TimeSpan, CancellationToken) |
Task Ожидает завершения выполнения. |
| Wait(Int32, CancellationToken) |
Task Ожидает завершения выполнения. Ожидание завершается, если интервал времени ожидания истекает или маркер отмены отмены будет отменен до завершения задачи. |
| Wait(TimeSpan) |
Task Ожидает завершения выполнения в течение указанного интервала времени. |
| Wait(CancellationToken) |
Task Ожидает завершения выполнения. Ожидание завершается, если маркер отмены отменен до завершения задачи. |
| Wait() |
Task Ожидает завершения выполнения. |
| Wait(Int32) |
Task Ожидает завершения выполнения в пределах указанного числа миллисекунда. |
Wait(TimeSpan, CancellationToken)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Task Ожидает завершения выполнения.
public:
bool Wait(TimeSpan timeout, System::Threading::CancellationToken cancellationToken);
public bool Wait(TimeSpan timeout, System.Threading.CancellationToken cancellationToken);
member this.Wait : TimeSpan * System.Threading.CancellationToken -> bool
Public Function Wait (timeout As TimeSpan, cancellationToken As CancellationToken) As Boolean
Параметры
- timeout
- TimeSpan
Время ожидания или InfiniteTimeSpan ожидание на неопределенный срок
- cancellationToken
- CancellationToken
Необходимо CancellationToken наблюдать за ожиданием завершения задачи.
Возвращаемое значение
Исключения
timeout — отрицательное число, отличное от -1 миллисекунда, которое представляет бесконечное время ожидания
–или–
время ожидания больше MaxValue.
Объект cancellationToken отменен.
Применяется к
Wait(Int32, CancellationToken)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Task Ожидает завершения выполнения. Ожидание завершается, если интервал времени ожидания истекает или маркер отмены отмены будет отменен до завершения задачи.
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
Public Function Wait (millisecondsTimeout As Integer, cancellationToken As CancellationToken) As Boolean
Параметры
- millisecondsTimeout
- Int32
Количество миллисекунда, ожидающее или Infinite (-1) для ожидания на неопределенный срок.
- cancellationToken
- CancellationToken
Маркер отмены, который следует наблюдать во время ожидания завершения задачи.
Возвращаемое значение
Исключения
Объект cancellationToken отменен.
Он Task был удален.
millisecondsTimeout — отрицательное число, отличное от -1, которое представляет бесконечное время ожидания.
Задача была отменена. Коллекция InnerExceptions содержит TaskCanceledException объект.
–или–
Исключение было создано во время выполнения задачи. Коллекция InnerExceptions содержит сведения об исключении или исключениях.
Примеры
В следующем примере вызывается Wait(Int32, CancellationToken) метод для предоставления значения времени ожидания и маркера отмены, который может завершить ожидание завершения задачи. Запускается новый поток и выполняется метод, который приостанавливает CancelToken и вызывает CancellationTokenSource.Cancel метод для отмены маркеров отмены. Затем задача запускается и задерживается в течение 5 секунд. Затем Wait метод вызывается для ожидания завершения задачи и предоставляется как краткое значение времени ожидания, так и маркер отмены.
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...
open System
open System.Threading
open System.Threading.Tasks
let cancelToken (obj: obj) =
Thread.Sleep 1500
printfn $"Canceling the cancellation token from thread {Thread.CurrentThread.ManagedThreadId}..."
match obj with
| :? CancellationTokenSource as source -> source.Cancel()
| _ -> ()
let ts = new CancellationTokenSource()
let thread = Thread(ParameterizedThreadStart cancelToken)
thread.Start ts
let t =
Task.Run(fun () ->
Task.Delay(5000).Wait()
printfn "Task ended delay...")
try
printfn $"About to wait completion of task {t.Id}"
let result = t.Wait(1510, ts.Token)
printfn $"Wait completed normally: {result}"
printfn $"The task status: {t.Status:G}"
with :? OperationCanceledException as e ->
printfn $"{e.GetType().Name}: The wait has been canceled. Task status: {t.Status:G}"
Thread.Sleep 4000
printfn $"After sleeping, the task status: {t.Status:G}"
ts.Dispose()
// 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...
Обратите внимание, что точные выходные данные из примера зависят от того, было ли отменено ожидание из-за маркера отмены или из-за истечения интервала времени ожидания.
Комментарии
Wait(Int32, CancellationToken) — это метод синхронизации, который вызывает поток ожидания завершения текущего экземпляра задачи до тех пор, пока не будет выполнено одно из следующих действий:
Задача успешно завершена.
Сама задача отменена или вызывает исключение. В этом случае вы обрабатываете AggregateException исключение. Свойство AggregateException.InnerExceptions содержит сведения об исключении или исключениях.
cancellationTokenМаркер отмены отменен. В этом случае вызов Wait(Int32, CancellationToken) метода вызывает OperationCanceledExceptionисключение.Интервал, определенный
millisecondsTimeoutистекает. В этом случае текущий поток возобновляет выполнение и возвращаетfalseметод.
Замечание
Отмена cancellationToken маркера отмены не влияет на выполнение задачи, если она также не была передана маркеру отмены и готова обрабатывать отмену.
cancellationToken Передача объекта этому методу позволяет просто отменить ожидание на основе какого-то условия.
Применяется к
Wait(TimeSpan)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Task Ожидает завершения выполнения в течение указанного интервала времени.
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 , представляющее -1 миллисекундах, которые будут ждать неограниченное время.
Возвращаемое значение
Исключения
Он Task был удален.
timeout — отрицательное число, отличное от -1 миллисекундах, которое представляет бесконечное время ожидания.
–или–
timeout больше int32.MaxValue.
Задача была отменена. Коллекция InnerExceptions содержит TaskCanceledException объект.
–или–
Исключение было создано во время выполнения задачи. Коллекция InnerExceptions содержит сведения об исключении или исключениях.
Примеры
В следующем примере запускается задача, которая создает пять миллионов случайных целых чисел от 0 до 100 и вычисляет их среднее значение. В этом примере метод используется Wait(TimeSpan) для ожидания завершения приложения в течение 150 миллисекунда. Если приложение завершается нормально, задача отображает сумму и среднее значение случайных чисел, созданных им. Если интервал времени ожидания истек, в примере отображается сообщение перед завершением.
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.
open System
open System.Threading.Tasks
let t =
Task.Run(fun () ->
let rnd = Random()
let mutable sum = 0L
let n = 5000000
for _ = 1 to n do
let number = rnd.Next(0, 101)
sum <- sum + int64 number
printfn $"Total: {sum:N0}"
printfn $"Mean: {float sum / float n:N2}"
printfn $"N: {n:N0}")
let ts = TimeSpan.FromMilliseconds 150
if t.Wait ts |> not then
printfn "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) — это метод синхронизации, который вызывает поток ожидания завершения текущего экземпляра задачи до тех пор, пока не будет выполнено одно из следующих действий:
Задача успешно завершена.
Сама задача отменена или вызывает исключение. В этом случае вы обрабатываете AggregateException исключение. Свойство AggregateException.InnerExceptions содержит сведения об исключении или исключениях.
Интервал, определенный
timeoutистекает. В этом случае текущий поток возобновляет выполнение и возвращаетfalseметод.
Применяется к
Wait(CancellationToken)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Task Ожидает завершения выполнения. Ожидание завершается, если маркер отмены отменен до завершения задачи.
public:
void Wait(System::Threading::CancellationToken cancellationToken);
public void Wait(System.Threading.CancellationToken cancellationToken);
member this.Wait : System.Threading.CancellationToken -> unit
Public Sub Wait (cancellationToken As CancellationToken)
Параметры
- cancellationToken
- CancellationToken
Маркер отмены, который следует наблюдать во время ожидания завершения задачи.
Исключения
Объект cancellationToken отменен.
Задача удалена.
Задача была отменена. Коллекция InnerExceptions содержит TaskCanceledException объект.
–или–
Исключение было создано во время выполнения задачи. Коллекция InnerExceptions содержит сведения об исключении или исключениях.
Примеры
В следующем примере показано простое использование маркера отмены для отмены ожидания завершения задачи. Задача запускается, вызывает CancellationTokenSource.Cancel метод, чтобы отменить любой из маркеров отмены источника маркеров, а затем задержки в течение пяти секунд. Обратите внимание, что сама задача не была передана маркеру отмены и не может быть отменена. Поток приложения вызывает метод задачи, чтобы ждать завершения задачи Task.Wait , но ожидание отменяется после отмены маркера отмены и OperationCanceledException создается исключение. Обработчик исключений сообщает об исключении, а затем выполняет спящий режим в течение шести секунд. Как показано в выходных данных из примера, задержка позволяет задаче выполняться в RanToCompletion состоянии.
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
open System
open System.Threading
open System.Threading.Tasks
let ts = new CancellationTokenSource()
let t =
Task.Run(fun () ->
printfn "Calling Cancel..."
ts.Cancel()
Task.Delay(5000).Wait()
printfn $"Task ended delay...")
try
printfn "About to wait for the task to complete..."
t.Wait ts.Token
with :? OperationCanceledException as e ->
printfn $"{e.GetType().Name}: The wait has been canceled. Task status: {t.Status:G}"
Thread.Sleep 6000
printfn $"After sleeping, the task status: {t.Status:G}"
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) создает отменяемое ожидание. Т. е. вызывает ожидание текущего потока до тех пор, пока не будет выполнено одно из следующих действий:
Задача завершается.
Маркер отмены отменен. В этом случае вызов Wait(CancellationToken) метода вызывает OperationCanceledExceptionисключение.
Замечание
Отмена cancellationToken маркера отмены не влияет на выполнение задачи, если она также не была передана маркеру отмены и готова обрабатывать отмену.
cancellationToken Передача объекта этому методу позволяет просто отменить ожидание.
Применяется к
Wait()
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Task Ожидает завершения выполнения.
public:
void Wait();
public void Wait();
member this.Wait : unit -> unit
Public Sub Wait ()
Исключения
Он Task был удален.
Задача была отменена. Коллекция InnerExceptions содержит TaskCanceledException объект.
–или–
Исключение было создано во время выполнения задачи. Коллекция InnerExceptions содержит сведения об исключении или исключениях.
Примеры
В следующем примере запускается задача, которая создает миллион случайных целых чисел от 0 до 100 и вычисляет их среднее значение. В примере используется Wait метод, чтобы убедиться, что задача завершается до завершения работы приложения. В противном случае, так как это консольное приложение, пример завершится до того, как задача сможет вычислить и отобразить среднее значение.
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
open System
open System.Threading.Tasks
let t =
Task.Run(fun () ->
let rnd = Random()
let mutable sum = 0L
let n = 1000000
for _ = 1 to n do
let number = rnd.Next(0, 101)
sum <- sum + int64 number
printfn $"Total: {sum:N0}"
printfn $"Mean: {float sum / float n:N2}"
printfn $"N: {n:N0}")
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 пытается удалить задачу из планировщика и выполнить ее встроенным в текущем потоке. Если это не удается сделать или если текущая задача уже запущена, он блокирует вызывающий поток до завершения задачи. Дополнительные сведения см. в разделе Task.Wait и Inlining в блоге по параллельному программированию с помощью .NET.
См. также раздел
Применяется к
Wait(Int32)
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
- Исходный код:
- Task.cs
Task Ожидает завершения выполнения в пределах указанного числа миллисекунда.
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
Количество миллисекунда, ожидающее или Infinite (-1) для ожидания на неопределенный срок.
Возвращаемое значение
Исключения
Он Task был удален.
millisecondsTimeout — отрицательное число, отличное от -1, которое представляет бесконечное время ожидания.
Задача была отменена. Коллекция InnerExceptions содержит TaskCanceledException объект.
–или–
Исключение было создано во время выполнения задачи. Коллекция InnerExceptions содержит сведения об исключении или исключениях.
Примеры
В следующем примере запускается задача, которая создает пять миллионов случайных целых чисел от 0 до 100 и вычисляет их среднее значение. В этом примере метод используется Wait(Int32) для ожидания завершения приложения в течение 150 миллисекунда. Если приложение завершается нормально, задача отображает сумму и среднее значение случайных чисел, созданных им. Если интервал времени ожидания истек, в примере отображается сообщение перед завершением.
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.
open System
open System.Threading.Tasks
let t =
Task.Run(fun () ->
let rnd = Random()
let mutable sum = 0L
let n = 5000000
for _ = 1 to n do
let number = rnd.Next(0, 101)
sum <- sum + int64 number
printfn $"Total: {sum:N0}"
printfn $"Mean: {float sum / float n:N2}"
printfn $"N: {n:N0}")
if t.Wait 150 |> not then
printfn "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) — это метод синхронизации, который вызывает поток ожидания завершения текущего экземпляра задачи до тех пор, пока не будет выполнено одно из следующих действий:
Задача успешно завершена.
Сама задача отменена или вызывает исключение. В этом случае вы обрабатываете AggregateException исключение. Свойство AggregateException.InnerExceptions содержит сведения об исключении или исключениях.
Интервал, определенный
millisecondsTimeoutистекает. В этом случае текущий поток возобновляет выполнение и возвращаетfalseметод.