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

到此這篇關於C#代碼延時的幾種實現的文章就介紹到這瞭,更多相關C# 代碼延時內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: