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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM