![]()
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading; //线程操作引用的命名空间
namespace windowform线程操作
{
//定义一个委托,没有参数
public delegate void RunDele();
public partial class Form1 : Form
{
Thread thread; //造一个线程对象
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false; //告诉程序不要检查线程的安全性,比较省力,但会对程序造成不好影响
}
bool isRun = true;
//点击启动
private void button1_Click(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(Run));
thread.IsBackground = true;
thread.Start(); //委托开始执行
/*& button1.Enabled = false;
long i = 0;
while (isRun)
{
listView1.Items.Insert(0,i.ToString());
i++;
}
isRun = true;*/
}
private void button2_Click(object sender, EventArgs e)
{
isRun = false;
button1.Enabled = true ;
}
long i = 0;
void Run()
{
// button1.Enabled = false;
while (isRun)
{
RunDele();
}
isRun = true;
}
void RunDele()
{
if (listView1.InvokeRequired)//子线程返回的是true
{
RunDele dr = new RunDele(RunDele);
this.Invoke(dr);//转换成父线程
}
else
{
listView1.Items.Add(i.ToString());
i++;
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}