c#非死循环延时_C# 之 代码实现延时

本文介绍了C#中两种实现延时的方法:使用Task.Delay()的异步方式以及通过Thread.Sleep()的线程方式。在主方法中,通过Task.Run异步启动延时任务,并展示了不同注释设置对程序执行顺序的影响。同时提供了一个简单的线程延时示例,帮助读者理解两种延时机制的差异。
摘要由CSDN通过智能技术生成

Task.Delay();异步实现

using System;

using System.Threading.Tasks;

namespace csharpYS

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Mian方法第一次输出...");

#region 第一种形式

var task_1 = Task.Run(async delegate

{

await Task.Delay(3000);

Console.WriteLine("3秒后执行,方式一 输出语句...");

return "异步执行result"; //可以得到一个返回值(int,bool,string都试了)

});

#endregion

Console.WriteLine("Mian方法第二次输出,调用延时...");

Console.WriteLine("task_1 的 Status:{0}, 结果: {1}",task_1.Status, task_1.Result);

Console.WriteLine("第一种形式,延时结束...");

#region 第二种形式

Task task_2 = Task.Run(task_YS);

//task_2.Wait(); //注释打开则等待task_2延时,注释掉则不等待

#endregion

Console.WriteLine("Mian方法最后一次输出,Main方法结束...");

Console.ReadKey();

}

public static async Task task_YS()

{

await Task.Delay(5000);

Console.WriteLine("5秒后执行,方式二 输出语句...");

}

}

}

下图一为注释运行结果,图二为注释打开运行结果:(建议使用时自行实践)

觉得上面方法不适用的童鞋,可以试试使用线程的方式:

线程实现:

简例:

using System;

using System.Collections;

using System.Collections.Generic;

using System.Threading;

namespace ExceptionDeme

{

class ThreadDemo

{

static void Main(string[] args)

{

Console.WriteLine("Main方法开始执行...");

Thread threadA = new Thread(DownLoadFile);

threadA.Start();

Console.WriteLine("Main方法执行结束...");

Console.ReadKey();

}

static void DownLoadFile()

{

//模拟开始下载 2S 后完成

Console.WriteLine("开始下载,此协程的Id是:" + Thread.CurrentThread.ManagedThreadId);

Thread.Sleep(2000);

Console.WriteLine("下载完成");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值