zoukankan      html  css  js  c++  java
  • 多线程

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                CheckForIllegalCrossThreadCalls = false;
                //关闭窗体的跨线程访问控件 检查
            }
            private void button1_Click(object sender, EventArgs e)
            {
                threadfun();
            }
            object obj1 = new object();
            void fun()
            {
                lock (obj1)//不加锁时,之前的一次循环没结束,也可执行执行下次循环
                {
                    for (int i = 0; i < 5000; i++)
                    {
                        textBox1.Text = (int.Parse(textBox1.Text) + 1).ToString();
                    }
                }
            }
            void funparam(object obj)
            {
                object[] o = (object[])obj;
                MessageBox.Show(o[0].ToString() + " " + o[1].ToString());
            }
     
            void threadfun()
            {
                Thread T1 = new Thread(fun);
                T1.IsBackground = true;
    // 1、当在主线程中创建了一个线程,那么该线程的IsBackground默认是设置为FALSE的。
    //2、当主线程退出的时候,IsBackground=FALSE的线程还会继续执行下去,直到线程执行结束。
    //3、只有IsBackground=TRUE的线程才会随着主线程的退出而退出。(这样没执行完突然退出不会报错)
    //4、当初始化一个线程,把Thread.IsBackground=true的时候,指示该线程为后台线程。后台线程将会随着主线程的退出而退出。
    //5、原理:只要所有前台线程都终止后,CLR就会对每一个活在的后台线程调用Abort()来彻底终止应用程序。
                T1.Start();
                Thread T2 = new Thread(fun);
                T2.IsBackground = true;
                T2.Start();
                Thread T3 = new Thread(fun);
                T3.IsBackground = true;
                T3.Start();
                Thread T4 = new Thread(funparam);
                object oblarr = new object[] { "bing", 12 };
                T4.IsBackground = true;
                T4.Start(oblarr);
                //T4 简写了T5
                ParameterizedThreadStart p = new ParameterizedThreadStart(funparam);
                Thread T5 = new Thread(p);
                   T5.IsBackground = true;
                T5.Start(oblarr);
            }
        }
    
  • 相关阅读:
    cocospods 卡在 Analyzing dependencies
    android px、sp、dp之间的互转
    Android 4.4环境搭建——Android SDK下载与安装
    我心中的核心组件(可插拔的AOP)~大话开篇及目录
    EF架构~AutoMapper对象映射工具简化了实体赋值的过程
    我心中的核心组件(可插拔的AOP)~第二回 缓存拦截器
    EF架构~为EF DbContext生成的实体添加注释(T5模板应用)
    品味编程~底层开发人员应该这样设计一个字体类
    Study notes for Clustering and K-means
    深入理解Oracle索引(25):一招鲜、吃遍天之单字段索引创建思路
  • 原文地址:https://www.cnblogs.com/bingguang/p/3174986.html
Copyright © 2011-2022 走看看