c#中任务工厂执行多线程任务

      在C#中经常用到Thread来执行多线程任务,用BackgroundWorker也非常方便。今天提到的是用任务工厂(TaskFactory)来实现多线程。

    

  //创建任务列表
        List<Task> tasks = new List<Task>();
        //将任务添加至任务工厂
        for (int i = 0; i < 3;i++ )
        {
            tasks.Add(Task.Factory.StartNew(()=>RunTask()));
        }
        //由任务工厂执行任务
        Task.Factory.ContinueWhenAll(tasks.ToArray(),TasksFinish,CancellationToken.None);

        //创建任务工厂控制变量
        private CancellationTokenSource _cts = new CancellationTokenSource();


        //task主函数
        private void RunTask()
        {
            while(true)
            {
                //如果任务取消,退出任务
                if(_cts.IsCancellationRequested)
                {
                    break;
                }
                //do some thing
            }
        }

        //任务结束函数,任务结束或取消后都会进这个函数
        private void TasksFinish()
        {
            MessageBox.Show("任务结束!");
        }

        //取消任务
        private void StopTasks()
        {
             _cts.Cancel();
        }



你可能感兴趣的:(多线程,C#,TaskFactory)