• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#多线程Thread

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在项目中经常用到线程Thread,先做个简单记录,后面再完善下,方便以后参考。本人技术有限,如有不同见解之处,欢迎博友批评指正。

执行的线程Thread分无参数的,一个参数,多个参数的。直接看代码吧。

NetFramework4.0后,出现了Task(本质还是Thread),这个效率更高,分配资源更合理。

一、没有参数的

        static void Main(string[] args)
        {
            Console.WriteLine("主线程开始了...");
            Console.WriteLine("主线程Thread:"+Thread.CurrentThread.ManagedThreadId);
            Thread thread = new Thread(ThreadTestMthod);
            thread.Start();
            for (int i = 0; i < 50; i++)
            {
                Console.WriteLine("Num:"+i);
            }
            
            Console.ReadKey();
        }
        static void ThreadTestMthod()
        {
            Console.WriteLine("当前线程Thread:"+Thread.CurrentThread.ManagedThreadId);
            for (int i = 50; i < 100; i++)
            {
                Console.WriteLine("Num:"+i);
            }
        }
View Code

二、一个参数

        static void Main(string[] args)
        {
            Console.WriteLine("主线程开始了...");
            Console.WriteLine("主线程Thread:" + Thread.CurrentThread.ManagedThreadId);
            Thread threadParam = new Thread(ThreadTestMthodParam);
            //或者Thread threadPapam2 = new Thread(new ThreadStart(() => ThreadTestMthodParam(100)));
            //再或者 Thread threadPapam3 = new Thread(() => ThreadTestMthodParam(100));
            threadParam.Start(100);

            for (int i = 0; i < 50; i++)
            {
                Console.WriteLine("Num:" + i);
            }

            Console.ReadKey();
        }
  static void ThreadTestMthodParam(object n)
        {
            int num = Convert.ToInt32(n);
            Console.WriteLine("有1个参数Thread:" + Thread.CurrentThread.ManagedThreadId);
            for (int i = 50; i < num; i++)
            {
                Console.WriteLine("Num:" + i);
            }
        }
View Code

三、多个参数

其实看到上面你也想到了,可以利用后面的Lambda表达式来表示。

        static void Main(string[] args)
        {
            Console.WriteLine("主线程开始了...");
            Console.WriteLine("主线程Thread:" + Thread.CurrentThread.ManagedThreadId);
            Thread threadParams = new Thread(() => ThreadTestMthodParams(100, 200));
            //或者Thread threadParams = new Thread(new ThreadStart(() => ThreadTestMthodParams(100, 200)));

            threadParams.Start();

            for (int i = 0; i < 50; i++)
            {
                Console.WriteLine("Num:" + i);
            }

            Console.ReadKey();
        }
        static void ThreadTestMthodParams(int min, int max)
        {
            Console.WriteLine("多个参数Thread:" + Thread.CurrentThread.ManagedThreadId);
            for (int i = min; i < max; i++)
            {
                Console.WriteLine("Num:" + i);
            }
        }
View Code

 用Task来操作

            Task t1 = new Task(ThreadTestMthod);
            t1.Start();

            Task t2 = new Task(() => ThreadTestMthodParams(100,200));
            t2.Start();

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ListBox控件怎样删除选择的多个Item(c#)发布时间:2022-07-13
下一篇:
在Android源码树中添加userspaceI2C读写工具(i2c-util)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap