upDateStateDelegate是要執行的委托我們前面有定義
ExecDateDiff計算時間差的方法自己寫的如下代碼
///
復制代碼
注意,大家一定要記著這里的類型要和委托的類型是一樣的,否則為出錯,而且它不會自動轉化,如果你定義的是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.anti-gravitydesign.com