1. 程式人生 > >c#中任務工廠執行多執行緒任務

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();
        }