LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 任务超时未完成直接返回结果

freeflydom
2023年5月20日 14:26 本文热度 978

Task.Wait 方法

定义

  • 命名空间     :

  • System.Threading.Tasks

  • 程序集     :

  • System.Runtime.dll

等待 Task 完成执行过程。

重载

Wait(TimeSpan, CancellationToken)

等待 Task 完成执行过程。

Wait()

等待 Task 完成执行过程。

Wait(Int32)

等待 Task 在指定的毫秒数内完成执行。

Wait(CancellationToken)

等待 Task 完成执行过程。 如果在任务完成之前取消标记已取消,等待将终止。

Wait(TimeSpan)

等待 Task 在指定的时间间隔内完成执行。

Wait(Int32, CancellationToken)

等待 Task 完成执行过程。 如果在任务完成之前超时间隔结束或取消标记已取消,等待将终止。


Wait(Int32)

等待 Task 在指定的毫秒数内完成执行。

public bool Wait (int millisecondsTimeout);


参数

  • millisecondsTimeout Int32

等待的毫秒数,或为 Infinite (-1),表示无限期等待。

返回

如果在分配的时间内 true 完成执行,则为 Task;否则为 false

例外

millisecondsTimeout 是一个非 -1 的负数,而 -1 表示无限期超时。

已取消任务。 InnerExceptions 集合包含 TaskCanceledException 对象。

- 或 -

执行任务期间引发了一个异常。 InnerExceptions 集合包含一个或多个异常的相关信息。

示例

以下示例启动一个任务,该任务生成 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


该文章在 2023/5/20 14:27:56 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved