C# 多线程随手记

来源:互联网 发布:阿里云短信接口 编辑:程序博客网 时间:2024/06/07 00:50

直接上代码

        /// <summary>        /// 执行多线程方法        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnThread_Click(object sender, EventArgs e)        {        }        private void btnThreadPool_Click(object sender, EventArgs e)        {            //使用线程池            ThreadPool.QueueUserWorkItem(t => Console.WriteLine(string.Format("线程ID:{0}", Thread.CurrentThread.ManagedThreadId)));            ThreadPool.QueueUserWorkItem(t =>            {                Console.WriteLine(string.Format("线程ID:{0},{1}", Thread.CurrentThread.ManagedThreadId, t));            }, "传递给线程的参数");        }        /// <summary>        /// Task方式 启动多线程        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnTask_Click(object sender, EventArgs e)        {            for (int i = 0; i < 1500; i++)            {                Task task = new Task(TaskMethon);                task.Start();            }        }        /// <summary>        /// 多线程TaskFactory        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnFactory_Click(object sender, EventArgs e)        {            List<Task> tasks = new List<Task>();            TaskFactory taskFactory = new TaskFactory();            for (int i = 0; i < 10; i++)            {                //模拟添加多个任务,例如查询数据库,查询缓存等等。。。                tasks.Add(taskFactory.StartNew(TaskMethon));            }            //等待所有任务完成后执行            taskFactory.ContinueWhenAll(tasks.ToArray(), t =>            {                Console.WriteLine("当所有任务执行完成后,进行后续操作!");            });        }        #region 线程测试方法        private void TaskMethon()        {            Console.WriteLine(string.Format("线程ID:{0}", Thread.CurrentThread.ManagedThreadId));        }        private void ThreadMethon(string name)        {            Console.WriteLine(string.Format("线程ID:{0}\t参数:{1}", Thread.CurrentThread.ManagedThreadId, name));        }        #endregion
0 0