zoukankan      html  css  js  c++  java
  • C#多线程的几种实现方法

    1.最简单的多线程

    using System;
    using System.Threading;
    
    namespace ThreadTest1
    {
        public class SimpleThread
        {
            public void Run()
            {
                Thread t1 = new Thread(new ThreadStart(this.ThreadFunc));
                Thread t2 = new Thread(new ThreadStart(this.ThreadFunc));
                t1.Start();
                Thread.Sleep(1000);
                t2.Start();
            }
    
            private void ThreadFunc()
            {
                for (int i = 0; i < 100; i++)
                {
                    Console.WriteLine(i);
                    Thread.Sleep(100);
                }
            }
        }
    }
    
    

    2.可以传参数的多线程

    using System;
    using System.Threading;
    
    namespace ThreadTest1
    {
        class ThreadWithPara
        {
            public void Run()
            {
                Thread t1 = new Thread(ThreadFunc);
                Thread t2 = new Thread(new ParameterizedThreadStart(ThreadFunc));
                t1.Start("t1");
                Thread.Sleep(1000);
                t2.Start("t2");
            }
    
            private void ThreadFunc(object obj)
            {
                for (int i = 0; i < 100; i++)
                {
                    Console.WriteLine(i + obj.ToString());
                    Thread.Sleep(100);
                }
            }
        }
    }
    
    

    3.自定义类的多线程

    using System;
    using System.Threading;
    
    namespace ThreadTest1
    {
        class MyThreadClass
        {
            private string data;
    
            public MyThreadClass(string data)
            {
                this.data = data;
            }
    
            public void ThreadMain()
            {
                Console.WriteLine("Running in a thread,data: {0}", data);
            }
        }
    
        class MainClass
        {
            public void Run()
            {
                MyThreadClass mtc = new MyThreadClass("thread1");
                Thread thread = new Thread(mtc.ThreadMain);
                thread.Start();
            }
        }
    }
    
    

    4. 匿名方法实现的多线程

    using System;
    using System.Threading;
    
    namespace ThreadTest1
    {
        public class AnonymousThread
        {
            public void Run()
            {
                Thread t1 = new Thread(() => ThreadFunc("thread-1"));
                t1.Start();
            }
    
            private void ThreadFunc(string obj)
            {
                for (int i = 0; i < 100; i++)
                {
                    Console.WriteLine(i + obj.ToString());
                    Thread.Sleep(100);
                }
            }
        }
    }
    
    

    5.参考

    C# 给多线程传参的三种方式

  • 相关阅读:
    Centos/Docker/Nginx/Node/Jenkins 操作
    MyBatis 流式查询
    127.0.0.1
    Spring中的@Bean注解
    工厂模式
    webservice
    vs每次拉下一个控件都必选设置为绝对位置才可以移动,怎样解决啊
    ASP.NET AJAX 概述
    AJAX介绍
    时间控件
  • 原文地址:https://www.cnblogs.com/wardensky/p/4381930.html
Copyright © 2011-2022 走看看