C# 任务超时未完成直接返回结果
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
Task. |
Wait(TimeSpan, CancellationToken) | 等待 Task 完成执行过程。 |
Wait() | 等待 Task 完成执行过程。 |
Wait(Int32) | 等待 Task 在指定的毫秒数内完成执行。 |
Wait(CancellationToken) | 等待 Task 完成执行过程。 如果在任务完成之前取消标记已取消,等待将终止。 |
Wait(TimeSpan) | 等待 Task 在指定的时间间隔内完成执行。 |
Wait(Int32, CancellationToken) | 等待 Task 完成执行过程。 如果在任务完成之前超时间隔结束或取消标记已取消,等待将终止。 |
如果在分配的时间内 true
完成执行,则为 Task;否则为 false
。
以下示例启动一个任务,该任务生成 0 到 100 之间的 500 万个随机整数,并计算其平均值。 该示例使用 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.
Wait(Int32) 是一种同步方法,它会导致调用线程等待当前任务实例完成,直到发生以下任一情况:
任务成功完成。
任务本身被取消或引发异常。 在这种情况下,你将处理异常 AggregateException 。 属性 AggregateException.InnerExceptions 包含有关异常的详细信息。
由 millisecondsTimeout
已用定义的间隔。 在这种情况下,当前线程继续执行,方法返回 false
。
------------------------------------
https://learn.microsoft.com/zh-CN/dotnet/api/system.threading.tasks.task.wait?view=net-7.0