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

     //定义委托 ; 参数为方法名称
            public delegate void UpdateLabel(string label);
    
            //control.invoke(参数delegate)方法:在拥有此控件的基础窗口句柄的线程上执行指定的委托。
            //timeElapsedInstring 是UpdateUI方法的参数。
            //lblStopWatch.Invoke(new UpdateLabel(UpdateUI), timeElapsedInstring);
            public bool IsCancelled { get; set; }
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void UpdateUI(string labelText)
            {
                lblStopWatch.Text = labelText;
            }
    
            private void btnStart_Click(object sender, EventArgs e)
            {
                DateTime startTime = DateTime.Now;
    
                IsCancelled = false;
    
                Thread t = new Thread(() =>
                {
                    while (IsCancelled == false) //当IsCancelled 等于 false时 执行
                    {
                        Thread.Sleep(1000);
    
                        string timeElapsedInstring = (DateTime.Now - startTime).ToString(@"hh:mm:ss");
                        //lblStopWatch 是lable控件 
                        lblStopWatch.Invoke(new UpdateLabel(UpdateUI), timeElapsedInstring);
    
                    }
                });
    
    
                t.Start();
            }
    
            private void btnStop_Click(object sender, EventArgs e)
            {
                IsCancelled = true;
            }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace PlainOldThread
    {
        class Program
        {
            static void Main(string[] args)
            {
                SimpleThreadExample st = new SimpleThreadExample();
                st.StartMultipleThread(); //调用对象下的方法
    
                for (int i = 0; i < 100; i++)  //主线程 每秒输出一行 111111111
                {
                    Thread.Sleep(1000);
                    Console.WriteLine("我是主线程0.0000000000000000000");
                    Console.WriteLine();
                }
    
    
    
                Console.ReadLine();
    
            }
        }
        public class SimpleThreadExample
        {
            /*
    Start():启动线程;
    Sleep(int):静态方法,暂停当前线程指定的毫秒数; 
    Abort():通常使用该方法来终止一个线程;
    Suspend():该方法并不终止未完成的线程,它仅仅挂起线程,以后还可恢复; 
    Resume():恢复被Suspend()方法挂起的线程的执行; 
                 */
    
    
            bool lk = true;
            public void StartMultipleThread()
            {
                DateTime startTime = DateTime.Now;
    
                Thread t1 = new Thread(() =>
                {
                    while (true)
                    {
                        if (lk)
                        {
                            Thread.Sleep(20); //每1秒执行1次
                            Console.WriteLine("我是线程1.111111111111111111");
                        }
                    }
                });
    
                Thread t2 = new Thread(() =>
                {
                    while (true)
                    {
                        if (lk)
                        {
                            Thread.Sleep(20); //每1秒执行1次
                            Console.WriteLine("我是线程2.22222222222222222");
                        }
                    }
                });
    
                //parameterized thread   //是参数
                Thread t3 = new Thread(p =>
                {
                    //var t = p.ToString();
                    while (true)
                    {
                        if (lk)
                        {
                            Thread.Sleep(20); //每1秒执行1次
                            Console.WriteLine("我是线程3.333333333333333333");
                        }
                    }
                });
                Thread t4 = new Thread(p =>
                {
                    //var t = p.ToString();
                    while (true)
                    {
                        //让3个线程都暂停
                        Thread.Sleep(20); //暂停1s 后再执行
                        if (lk)
                        {
                            lk = false;
                            Thread.Sleep(10); //暂停1s 后再执行
                            Console.WriteLine("");
                            lk = true;
                        }
                    }
                });
                Thread t5 = new Thread(() =>
                {
                    while (true)
                    {
                        if (lk)
                        {
                            Thread.Sleep(20); //每1秒执行1次
                            Console.WriteLine("我是线程5.5555555555555555555555");
                        }
                    }
                });
                Thread t6 = new Thread(() =>
                {
                    while (true)
                    {
                        if (lk)
                        {
                            Thread.Sleep(20); //每1秒执行1次
                            Console.WriteLine("我是线程6.6666666666666666666666");
                        }
                    }
                });
    
                //t1.Start();//启动线程1
                //t2.Start();//启动线程2
                //passing parameter to parameterized thread
                //t3.Start(4); //启动线程3
                t4.Start(4);
                //t5.Start();
                //t6.Start();
                ////wait for t1 to fimish
                //t1.Join();   //.Join 就是加入的意思,也就是说新创建的线程加入到进程中,并马上执行
                //t2.Join();
                //t3.Join();
                //t4.Join();
                //wait for t2 to finish
                //t2.Join();
                //wait for t3 to finish
    
    
    
                //Console.WriteLine("所有线程 Exited in 100 secods", (DateTime.Now - startTime).TotalSeconds);
            }
    
        }
    }
  • 相关阅读:
    使用nexus 管理pip 私有包
    gitingore && opensource license 自动生成的网站
    lua-resty-qless-web UI 界面运行
    自定义pip 包开发简单说明
    ethr 微软开源的tcp udp http 网络性能测试工具
    openresty 集成lua-resty-mail +smtp2http 扩展灵活的mail 服务
    masterlab 敏捷项目管理工具
    luarocks 自定义包发布试用
    vorpal 又一个方便的cli 开发包
    gogs wekan 集成试用
  • 原文地址:https://www.cnblogs.com/enych/p/11596630.html
Copyright © 2011-2022 走看看