C# Thread應用(二)
在 C# Thread應用(一) 已經實行到委派
接著要用lambda來完成
程式碼:
其中 ( ) => { } 就是lambda,是C#中很強悍的應用
本來要寫完整的函式,是要寫:
若是匿名函式,只會在此用一次,別處不會用:
lambda更屌,跟據要求就回傳要求的型態
也不new了,也不用string了,直接改成:
如此即完成一個匿名的函式。
接著在本例中,有個叫Task
是更為方便的應用,Thread是一個工人
Task可以像成是一個承包商,由一群工人組成
並且有更棒的回應程式功能
應用更為廣泛,可以實現像Android中的AsyncTask
舉個例子:
若要執行某件會做很久事,通常在按下後,會出現「請稍等…」的訊息
若按下沒什麼反應,往往會覺得怪怪的
Task 搭配 Async 及 await,即可實現提示訊息
比上一篇的委派更方便使用了!
程式碼:
說明:async可以單獨調用,await 一定要配合async才可以使用
接著要用lambda來完成
程式碼:
private void button5_Click(object sender, EventArgs e) { ThreadStart ts = new ThreadStart(() => { for (int i = 10; i <= 100; i+=10) Console.WriteLine(Thread.CurrentThread.Name + ":" + i); }); Thread t1 = new Thread(ts); t1.Name = "lambda Thread"; t1.Start(); } private void button6_Click(object sender, EventArgs e) { Task.Run(() => { for (int i = 10; i <= 100; i += 10) { Console.WriteLine("lambda Task:"+i); } }); }
本來要寫完整的函式,是要寫:
private string xxx (){return "abc";}
若是匿名函式,只會在此用一次,別處不會用:
new string(){return "abc";}
lambda更屌,跟據要求就回傳要求的型態
也不new了,也不用string了,直接改成:
()=>{return "abc";}
如此即完成一個匿名的函式。
接著在本例中,有個叫Task
是更為方便的應用,Thread是一個工人
Task可以像成是一個承包商,由一群工人組成
並且有更棒的回應程式功能
應用更為廣泛,可以實現像Android中的AsyncTask
舉個例子:
若要執行某件會做很久事,通常在按下後,會出現「請稍等…」的訊息
若按下沒什麼反應,往往會覺得怪怪的
Task 搭配 Async 及 await,即可實現提示訊息
比上一篇的委派更方便使用了!
程式碼:
private void button7_Click(object sender, EventArgs e) { //這是像Thread直接調用並且執行 Task.Run(() => { for (int i = 1; i <= 100; i++) { Console.WriteLine("主工作:" + i); Thread.Sleep(100); } }); } private async void button8_Click(object sender, EventArgs e) { label2.Text = "開始執行計算..."; long ans = await Task.Run(() => { //使用lambda 並配合async await,即可執行理想的顯示 long sum = 0; for (int i = 1; i <= 2100000000; i++) sum += i; return sum; }); label2.Text = ans.ToString(); }
說明:async可以單獨調用,await 一定要配合async才可以使用
留言
張貼留言