C#實現不影響當前線程情況下間隔一定的時間執行一段代碼


大家知道C#間隔一定時間去執行一段代碼,常用的有

1. Thread.Sleep(多少毫秒);

2. 使用Timer控件間隔一定的時間,設置執行一次

以上兩種方法,實現起來不難,弊端在於會阻塞當前線程,界面會卡住,不友好

下面介紹一種更好的方式,

//隔設定的時間在執行代碼 
                    Task.Factory.StartNew(() =>
                    {
                        System.Threading.Thread.Sleep(5000);
                        //要執行的代碼段
               …… });

Task是Net4.0 新加入的,用來替代ThreadPool,調用ThreadPool的QueueUserWorkItem這個技術存在許多限制。其中最大的問題是沒有一個內建的機制讓你知道操作在什么時候完成,也沒有一個機制在操作完成是獲得一個返回值,Microsoft為了克服這些限制(同時解決其他一些問題),引入了任務(tasks)的概念。

Task兩種調用方式:
Task.Factory.StartNew(
() =>
{


Console.WriteLine("任務開始工作……");
//模擬工作過程
Thread.Sleep(1000);
}
);


二:
Task t = new Task(() =>
{
while (!cts.Token.IsCancellationRequested)
{
Console.WriteLine("任務開始工作……");
//模擬工作過程
Thread.Sleep(1000);
}


});
t.Start();


t.ContinueWith((task) =>
{
Console.WriteLine("任務完成,完成時候的狀態為:");
});


cts.Token.Cancel();

 


免責聲明!

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



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