C# Task 暂停与取消

时间:2025-03-26 07:45:57

前言:

①取消task任务之CancellationTokenSource的用法;

②task的线程管控方法Task..Wait(time),(), (),.

1. 声明参数

CancellationTokenSource tokenSource = new CancellationTokenSource();
 CancellationToken token = ;
 ManualResetEvent resetEvent = new ManualResetEvent(true);

2. 定义Task

Task task = new Task(async () => {
    while (true) {  
        if () {
            return;
        }
        
        // 初始化为true时执行WaitOne不阻塞
        ();

        // Doing something.......
        
        // 模拟等待100ms
        await (100);
    }

}, token);

();

3. 暂停Task

();

4. 继续Task


();

5. 取消Task


();

实例:

#region TASK用法举例
        static void TasKTest()
        {
            //带返回值的task
            Task<String> mytask = (async () =>
            {
                await (5000);
                return "老铁666";
            }, );
            //();
            while (!(100)) //在指定时间执行完成就返回true
            {
                (".");
            }
            ();//task任务取消,所以获取会报错

            Task taskFactory = (() =>
            {
                (1000);
                ("perfect!");
            });
            ();
            ();//taskFactory任务完成才往下执行
            (mytask, taskFactory);//所有任务完成再往下执行
            (mytask, taskFactory);//任一任务完成就往下执行
            ();

            Task taskTest = (DoOnSecond);//ContinueWith用法举例
        }
        static void DoOnSecond(Task t)
        {
            ("task {0} finished", );
            ("this task id {0}", );
            ("do some cleanup");
        }
        #endregion