1
using System.Threading;
先定义委托 线程
Thread myThread;
private delegate void myDelegate(string r, string str);//定义委托
2
窗体载入时添加列
private void Form1_Load(object sender, EventArgs e)
{
this.dataGridView1.Columns.Add("ad", "ad");//添加列
}
3
private void button1_Click(object sender, EventArgs e)
{
myThread= new Thread(startFillDv);//实例化线程
myThread .Start();//启动线程
}
4
private void startFillDv()
{
for (int i =0;i<=50000;i++)
{
Grid(i.ToString(), i.ToString());
Thread.Sleep(1000);//干这么久,休息下的
}
}
5
private void Grid(string s,string sa)
{
if (this.InvokeRequired)
{
this.Invoke(new myDelegate(Grid), new object[] { s, sa });
}
else
this.dataGridView1.Rows.Add(sa); //加行
}
完整代码:
1using System;
2using System.Collections.Generic;
3using System.ComponentModel;
4using System.Data;
5using System.Drawing;
6using System.Text;
7using System.Windows.Forms;
8using System.Threading;
9namespace TestMuiltThread
10{
11 public partial class Form1 : Form
12 {
13 Thread myThread;
14 private delegate void myDelegate(string r, string str);//定义委托
15 public Form1()
16 {
17 InitializeComponent();
18 }
19
20 private void Form1_Load(object sender, EventArgs e)
21 {
22 this.dataGridView1.Columns.Add("ad", "ad");//添加列
23 }
24
25 private void button1_Click(object sender, EventArgs e)
26 {
27 myThread= new Thread(startFillDv);//实例化线程
28 myThread .Start();
29 }
30 private void startFillDv()
31 {
32
33 for (int i =0;i<=50000;i++)
34 {
35 Grid(i.ToString(), i.ToString());
36 Thread.Sleep(1000);
37 }
38
39 }
40
41 private void Grid(string s,string sa)
42 {
43
44 if (this.InvokeRequired)
45 {
46
47 this.Invoke(new myDelegate(Grid), new object[] { s, sa });
48 }
49 else
50 this.dataGridView1.Rows.Add(sa);
51
52
53 }
54
55 private void Form1_FormClosed(object sender, FormClosedEventArgs e)
56 {
57 if (this.myThread.IsAlive())
58 {
59 this.myThread.Abort();//结束线程
60 }
61 }
62
63
64 }
65}