2018年3月27日14:43:08
对一个函数或一段代码的执行有时间的要求(如获取输入、从网络取得信息),当希望对其设置一个最大的等待时间、超时时间时,而不论其有无得到理想的返回值都进行返回,可以使用该方法。该方法将确保指定的代码在指定的时间内让程序等待其结果,而超出这个时间的时候将会跳过并继续往下执行。
本方法没有使用定时器,但是比定时器更加容易理解,更加简单,所需要的代码量和工作量更少。
原理
使用类库Task.Factory自带的类方法实现。
code
static void Main(string[] args)
{
string input = " ";
Task.Factory.StartNew(() => { input = Console.ReadLine(); }).Wait(10 * 1000);
Console.WriteLine(input);
}
代码原理及分析
核心代码为Task.Factory.StartNew()
以及其返回的对象调用的Wait()
的结合使用。
其中Task.Factory.StartNew()执行一段代码,这里采用lambda作为参数,功能是从Console读取输入;然后调用Wait()函数等待10 * 1000毫秒;在该时间范围内代码段完成了执行或超出该时间范围会返回并继续向下执行。实现最大等待时间。
技术上来说,可以实现对任意方法或函数的指定时间的等待。