zoukankan      html  css  js  c++  java
  • C#WinForm实现线程的启动、挂起、恢复、终止操作

    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; }
            }
        }
    
  • 相关阅读:
    跨站脚本攻击
    性能测试总述
    转:KPI(Key Performance Indicator,关键绩效指标)
    《C#与.NET3.5高级程序设计(第4版)》笔记2
    三层架构的一点小小的认识(很小很小)
    《C#与.NET3.5高级程序设计(第4版)》笔记3
    windows 2008无线网络"没有正确配置为使用IP协议" 错误解决办法
    《C#与.NET3.5高级程序设计(第4版)》笔记6
    A+=B和A=A+B真的有区别吗
    《C#与.NET3.5高级程序设计(第4版)》笔记5
  • 原文地址:https://www.cnblogs.com/xuxueming/p/11913702.html
Copyright © 2011-2022 走看看