• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C#多線程|匿名委托傳參數|測試您的網站能承受的壓力|附源代碼(2)

    發表于:2012-02-14來源:博客園作者:Perky Su點擊數: 標簽:C#
    upDateStateDelegate是要執行的委托我們前面有定義 ExecDateDiff計算時間差的方法自己寫的如下代碼 /// /// 程序執行時間測試 /// /// 開始時間 /// 結束時間 /// 返回

      upDateStateDelegate是要執行的委托我們前面有定義

      ExecDateDiff計算時間差的方法自己寫的如下代碼

      ///

    /// 程序執行時間測試 /// ///開始時間 ///結束時間 /// 返回(秒)單位,比如: 0.00239秒 public static string ExecDateDiff(DateTime dateBegin, DateTime dateEnd) { TimeSpan ts1 = new TimeSpan(dateBegin.Ticks); TimeSpan ts2 = new TimeSpan(dateEnd.Ticks); TimeSpan ts3 = ts1.Subtract(ts2).Duration(); return ts3.TotalMilliseconds.ToString(); }

      復制代碼

      注意,大家一定要記著這里的類型要和委托的類型是一樣的,否則為出錯,而且它不會自動轉化,如果你定義的是String,傳的是int是不可以的, 要手動的去轉,這點請大家注意一下。

      dgvrowid啟動線程所在DataGridview行,一行是一個線程的變化情況

      "總用時(毫秒)" 列名,這里是為了方便 大家看,使用的漢語大家見諒。

      6.啟動線程,我們只要執行一個For就可以循環啟動了,大家一起來看看方法吧,

      private void button3_Click(object sender, EventArgs e) { int count = Convert.ToInt32(txtCount.Text.Trim()); int number = Convert.ToInt32(txtNumber.Text.Trim()); CreateTable(count + 1); //開啟number個線程 for (int i = 0; i < count; i++) { Thread pingTask = new Thread(new ThreadStart(delegate { PingTask(i, number); })); pingTask.Start(); Thread.Sleep(100); } }

      復制代碼

      我們都知道線程是不能直接傳參數的,只能傳Object,但使用匿名委托就可以解決 這個問題,方法如上面,大家看不明白的可以留言給我。

      Thread.Sleep(100); 是為了讓線程正常啟動做了一個時間間隔。

      大家可以根據自己的情況調整

      其實這個例子不但可以實現這樣測試,大家還可以用來訪問數據庫,開上幾千個線程,看看你的Sql代碼訪問速度有多快。

      個人感覺很不錯的一種壓力測試方法

      希望大家多提提建議哦

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>