.net 多线程笔记

来源:互联网 发布:网站改版优化 编辑:程序博客网 时间:2024/04/28 00:27
<pre name="code" class="csharp">using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;namespace ThreadSample{    public class Program    {        static void Main(string[] args)        {            CreateThread1();            //CreateThread2();            //CreateThread3();            Console.ReadLine();        }        /// <summary>        /// 简单线程        /// </summary>        private static void CreateThread1()        {            for (int threadidx = 0; threadidx < 10; threadidx++)            {                Thread t = new Thread(new ThreadStart(fun1));                t.Start();            }        }        /// <summary>        /// 带参数线程        /// </summary>        private static void CreateThread2()        {            for (int threadidx = 0; threadidx < 10; threadidx++)            {                ParameterizedThreadStart ParStart = new ParameterizedThreadStart(fun2);                Thread myThread = new Thread(ParStart);                ThreadArgs args = new ThreadArgs { ThreadIdx = threadidx, ThreadName = "线程" + threadidx, Memo = "备注" };                myThread.Start(args);            }        }        /// <summary>        /// 线程执行完处理        /// </summary>        private static void CreateThread3()        {            List<System.Threading.Tasks.Task> tasks = new List<System.Threading.Tasks.Task>();            for (int threadidx = 0; threadidx < 10; threadidx++)            {                ThreadArgs args = new ThreadArgs { ThreadIdx = threadidx, ThreadName = "线程" + threadidx, Memo = "备注" };                System.Threading.Tasks.Task task = System.Threading.Tasks.Task.Factory.StartNew((object obj) => fun2(obj), args);                tasks.Add(task);            }            System.Threading.Tasks.Task.WaitAll(tasks.ToArray());            Console.WriteLine("所有线程执行完毕");        }        private static void fun1()        {            Console.WriteLine("call fun1");        }        /// <summary>        /// 带参数方法        /// </summary>        /// <param name="obj"></param>        private static void fun2(object obj)        {            ThreadArgs args =(ThreadArgs)obj;            Console.WriteLine("call fun2 --idx:"+args.ThreadIdx +"--name:" + args.ThreadName);        }    }    /// <summary>    /// 参数    /// </summary>    public class ThreadArgs    {        public int ThreadIdx;        public string ThreadName;        public string Memo;    }}




0 0
原创粉丝点击