日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BackgroundWorker

發布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BackgroundWorker 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Diagnostics; using System.Threading.Tasks; using System.Threading;namespace 異步編程 {class Program{static void Main(string[] args){MyDownloadString ds = new MyDownloadString();ds.DoRun();Console.ReadKey();}}class MyDownloadString{Stopwatch sw = new Stopwatch();public void DoRun(){const int LargeNumber = 6000000;sw.Start();Task<int> t1 = CountCharacterAsync(1, "http://www.microsoft.com");// t1.Wait(); 等待這個任務執行完成再去執行其他Task<int> t2 = CountCharacterAsync(2, "http://www.illustratedcsharp.com");//t2.Wait();// Console.WriteLine("3"+t2.Result);CountToAlargeNumber(1, LargeNumber);CountToAlargeNumber(2, LargeNumber);CountToAlargeNumber(3, LargeNumber);CountToAlargeNumber(4, LargeNumber);Console.WriteLine("4");Console.WriteLine("chars in www.microsoft.com : {0}", t1.Result);Console.WriteLine(" chars in www.illustatecsharp.com : {0}", t2.Result);Console.WriteLine("time in total : " + sw.Elapsed.TotalMilliseconds);}//async 相當于一個標志,標志這個是異步方法,await 指明需要異步執行的地方 ,一個//異步方法可以包含任意多個await表達式,如果一個不包括編譯器會報警,//異步方法的三種返回類型//Task<T> ,方法返回值,使用Task.Result獲得這個返回值//Task ,如果調用方法不需要從異步方法中返回某個值,但需要檢查異步方法的狀態,此時使用Task,這是即使異步方法return了某個值,此時也不會獲取到//Void ,只是調用異步方法,沒有任何交互// await 指定一個異步執行的任務(TASK),創建一個Task的最簡單方法是 Task.run() ,它是在不同線程上運行方法//Task.Delay 不同于thread.sleep 不會阻塞線程,線程可以繼續處理其他工作private async Task<int> CountCharacterAsync(int id ,string site){WebClient wc = new WebClient();Console.WriteLine("starting call {0} : {1} ms", id, sw.Elapsed.TotalMilliseconds);string result = await wc.DownloadStringTaskAsync(new Uri(site));Func<int, int> nf = new Func<int, int>(get10);await Task.Run(() => get10(2)); // 使用lambada表達式逃避task類型的約束Console.WriteLine(" Call {0} completed : {1} ms",id, sw.Elapsed.TotalMilliseconds);await Task.Delay(5000);return result.Length;}private void CountToAlargeNumber(int id ,int value){for (long i = 0; i < value; i++) ;Console.WriteLine(" End counting {0} : {1} ms ",id,sw.Elapsed.TotalMilliseconds );}private int get10(int x){return 10+x;}} }

  

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespace BackgroundWorker {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){if (!backgroundWorker1.IsBusy){backgroundWorker1.RunWorkerAsync();}}private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e){for (int i = 1; i < 11; i++){Thread.Sleep(2000);backgroundWorker1.ReportProgress(i * 10);}}private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e){progressBar1.Value = e.ProgressPercentage;}} }

  

轉載于:https://www.cnblogs.com/Jeely/p/11001939.html

總結

以上是生活随笔為你收集整理的BackgroundWorker的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。