C#WinForm实现线程的启动,挂起等操作
程序员文章站
2022-06-10 20:28:09
...
public partial class Form1 : Form
{
Thread t = null;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(Run));
t.Start();
}
public void Run()
{
for (int i = 1; i < 20000; i++)
{
this.Invoke(new Action(
() => {
this.richTextBox1.Text = "第" + i + "条记录同步完成";
this.progressBar1.Value = i / 200;
this.label2.Text = i / 200 + "%";
}
));
Thread.Sleep(10);
}
}
private void button2_Click(object sender, EventArgs e)
{
Thread.Sleep(5000);
}
private void button3_Click(object sender, EventArgs e)
{
if (t.ThreadState!=ThreadState.Suspended)
{
t.Suspend();
}
}
private void button4_Click(object sender, EventArgs e)
{
if (t.ThreadState == ThreadState.Suspended)
{
t.Resume();
}
}
private void button5_Click(object sender, EventArgs e)
{
t.Abort();
}
string str = "";
private void button6_Click(object sender, EventArgs e)
{
t = new Thread(new ParameterizedThreadStart(RunB));
A a = new A() { X = this.textBox1.Text, Y = this.textBox3.Text };
t.Start(a);//启动线程
}
public void Run1()
{
str = "[" + this.textBox1.Text + "]";
for (int i = 1; i < 20000; i++)
{
this.Invoke(new Action(
() => {
this.richTextBox1.Text = str+"第" + i + "条记录同步完成";
this.progressBar1.Value = i / 200;
this.label2.Text = i / 200 + "%";
}
));
Thread.Sleep(10);
}
}
private void RunB(object a)
{
for (int i = 1; i < 20000; i++)
{
// Invoke (委托 )
// Action ( lambda )
// Invoke ( new Action ( ()=>{} ));
this.Invoke(new Action(
() => {
this.richTextBox1.Text = ((A)a).X + "第" + i + "条记录同步完成" + ((A)a).Y;
this.progressBar1.Value = i / 200;
this.label2.Text = i / 200 + "%";
}
));
Thread.Sleep(10);
}
}
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}
class A
{
public string X { get; set; }
public string Y { get; set; }
}
}
上一篇: 判断图片是否可从服务器正常取回