C# 之 代码实现延时

C# 代码实现延时…

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("下载完成");
        }
}

运行结果
相关连接:
C# 线程简介
C# 开启线程的几种方式


计时器方式实现:

 class Program
    {
        static void Main(string[] args)
        {
   			Console.WriteLine("Czhenya  ... Main Start");
            WaitFunctions(2);
            Console.WriteLine("Czhenya  ... Main End");
		}
		
 	    public static void WaitFunctions(int waitTime)
        {
            if (waitTime <= 0) return;

            Console.WriteLine("开始执行 ...");
            DateTime nowTimer = DateTime.Now;
            int interval = 0;
            while (interval < waitTime)
            {
                TimeSpan spand = DateTime.Now - nowTimer;
                interval = spand.Seconds;
            }

            Console.WriteLine(waitTime + "秒后继续 ...");
        }
  }

执行截图:
rus

Czhenya CSDN认证博客专家 Unity C# Lua 游戏开发
一个从事游戏开发行业的U3D程序猿,本博客专注分享学到的知识和开发中遇到的问题;若有不足,敬请指正,共同学习,一起进步!!!
©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值