Пример #1
0
        //static void Main(string[] args)
        //{
        //    /*  创建一个任务 不调用 不执行  状态为Created */
        //    Task tk = new Task(() =>
        //    {
        //    });
        //    Console.WriteLine(tk.Status.ToString());

        //    /*  创建一个任务 执行  状态为 WaitingToRun */
        //    Task tk1 = new Task(() =>
        //    {
        //        //没有安排任务
        //    });
        //    tk1.Start();/*对于安排好的任务,就算调用Start方法也不会立马启动 此时任务的状态为WaitingToRun*/
        //    Console.WriteLine(tk1.Status.ToString());

        //    /*  创建一个主任务 */
        //    Task mainTask = new Task(() =>
        //    {
        //        SpinWait.SpinUntil(() => //安排任务了
        //        {
        //            return false;
        //        }, 30000); //超时时间
        //    });
        //    /*  将子任务加入到主任务完成之后执行 */
        //    Task subTask = mainTask.ContinueWith((t1) =>
        //    {
        //    });
        //    /*  启动主任务 */
        //    mainTask.Start();
        //    /*  此时子任务状态为 WaitingForActivation */
        //    Console.WriteLine(subTask.Status.ToString());


        //    /*  创建一个任务 执行 后 等待一段时间 并行未结束的情况下 状态为 Running */
        //    Task tk2 = new Task(() =>
        //    {
        //        SpinWait.SpinUntil(() => false, 30000);
        //    });
        //    tk2.Start();/*对于安排好的任务,就算调用Start方法也不会立马启动*/
        //    SpinWait.SpinUntil(() => false, 300);
        //    Console.WriteLine(tk2.Status.ToString());


        //    /*  创建一个任务 然后取消该任务 状态为Canceled */
        //    CancellationTokenSource cts = new CancellationTokenSource();
        //    Task tk3 = new Task(() =>
        //    {
        //        for (int i = 0; i < int.MaxValue; i++)
        //        {
        //            if (!cts.Token.IsCancellationRequested)
        //            {
        //                cts.Token.ThrowIfCancellationRequested();
        //            }
        //        }
        //    }, cts.Token);
        //    tk3.Start();/*启动任务*/
        //    SpinWait.SpinUntil(() => false, 100);
        //    cts.Cancel();/*取消该任务执行 但并非立马取消 所以对于Canceled状态也不会立马生效*/
        //    SpinWait.SpinUntil(() => false, 1000);
        //    Console.WriteLine(tk3.Status.ToString() + " " + tk3.IsCanceled);
        //    SpinWait.SpinUntil(() => false, 1000);
        //    Console.WriteLine(tk3.Status.ToString() + " " + tk3.IsCanceled);
        //    SpinWait.SpinUntil(() => false, 1000);
        //    Console.WriteLine(tk3.Status.ToString() + " " + tk3.IsCanceled);

        //    /*创建一个任务 让它成功的运行完成 会得到 RanToCompletion 状态*/
        //    Task tk4 = new Task(() =>
        //    {
        //        SpinWait.SpinUntil(() => false, 10);
        //    });
        //    tk4.Start();
        //    SpinWait.SpinUntil(() => false, 300);
        //    Console.WriteLine(tk4.Status.ToString());

        //    /*创建一个任务 让它运行失败 会得到 Faulted 状态*/
        //    Task tk5 = new Task(() =>
        //    {
        //        throw new Exception();
        //    });
        //    tk5.Start();
        //    SpinWait.SpinUntil(() => false, 300);
        //    Console.WriteLine(tk5.Status.ToString());

        //    Console.ReadLine();
        //}
        static void Main()
        {
            Thread.Sleep(50);
            Task t1 = new Task(() =>
            {
                tm t11 = new tm();
                t11.taskmethod();
            }
                               );

            t1.Start();

            new Task(async() =>
            {
                Console.WriteLine("Task t start 2");
                await Task.Delay(1000);
                Console.WriteLine("Task t end");
            }).Start();

            //t.Start();

            Task.Run(() =>
            {
                Console.WriteLine("Anonymous task start 3");
                //await t;
                Console.WriteLine("Anonymous task end");
            });

            Thread.Sleep(1200);

            Console.WriteLine("end");
            Console.ReadKey();
        }
        //static void Main(string[] args)
        //{
        //    /*  创建一个任务 不调用 不执行  状态为Created */
        //    Task tk = new Task(() =>
        //    {
        //    });
        //    Console.WriteLine(tk.Status.ToString());

        //    /*  创建一个任务 执行  状态为 WaitingToRun */
        //    Task tk1 = new Task(() =>
        //    {
        //        //没有安排任务
        //    });
        //    tk1.Start();/*对于安排好的任务,就算调用Start方法也不会立马启动 此时任务的状态为WaitingToRun*/
        //    Console.WriteLine(tk1.Status.ToString());

        //    /*  创建一个主任务 */
        //    Task mainTask = new Task(() =>
        //    {
        //        SpinWait.SpinUntil(() => //安排任务了
        //        {
        //            return false;
        //        }, 30000); //超时时间
        //    });
        //    /*  将子任务加入到主任务完成之后执行 */
        //    Task subTask = mainTask.ContinueWith((t1) =>
        //    {
        //    });
        //    /*  启动主任务 */
        //    mainTask.Start();
        //    /*  此时子任务状态为 WaitingForActivation */
        //    Console.WriteLine(subTask.Status.ToString());


        //    /*  创建一个任务 执行 后 等待一段时间 并行未结束的情况下 状态为 Running */
        //    Task tk2 = new Task(() =>
        //    {
        //        SpinWait.SpinUntil(() => false, 30000);
        //    });
        //    tk2.Start();/*对于安排好的任务,就算调用Start方法也不会立马启动*/
        //    SpinWait.SpinUntil(() => false, 300);
        //    Console.WriteLine(tk2.Status.ToString());


        //    /*  创建一个任务 然后取消该任务 状态为Canceled */
        //    CancellationTokenSource cts = new CancellationTokenSource();
        //    Task tk3 = new Task(() =>
        //    {
        //        for (int i = 0; i < int.MaxValue; i++)
        //        {
        //            if (!cts.Token.IsCancellationRequested)
        //            {
        //                cts.Token.ThrowIfCancellationRequested();
        //            }
        //        }
        //    }, cts.Token);
        //    tk3.Start();/*启动任务*/
        //    SpinWait.SpinUntil(() => false, 100);
        //    cts.Cancel();/*取消该任务执行 但并非立马取消 所以对于Canceled状态也不会立马生效*/
        //    SpinWait.SpinUntil(() => false, 1000);
        //    Console.WriteLine(tk3.Status.ToString() + " " + tk3.IsCanceled);
        //    SpinWait.SpinUntil(() => false, 1000);
        //    Console.WriteLine(tk3.Status.ToString() + " " + tk3.IsCanceled);
        //    SpinWait.SpinUntil(() => false, 1000);
        //    Console.WriteLine(tk3.Status.ToString() + " " + tk3.IsCanceled);

        //    /*创建一个任务 让它成功的运行完成 会得到 RanToCompletion 状态*/
        //    Task tk4 = new Task(() =>
        //    {
        //        SpinWait.SpinUntil(() => false, 10);
        //    });
        //    tk4.Start();
        //    SpinWait.SpinUntil(() => false, 300);
        //    Console.WriteLine(tk4.Status.ToString());

        //    /*创建一个任务 让它运行失败 会得到 Faulted 状态*/
        //    Task tk5 = new Task(() =>
        //    {
        //        throw new Exception();
        //    });
        //    tk5.Start();
        //    SpinWait.SpinUntil(() => false, 300);
        //    Console.WriteLine(tk5.Status.ToString());

        //    Console.ReadLine();
        //}
        static void Main()
        {
            Thread.Sleep(50);
            Task t1 = new Task(() =>
            {
                tm t = new tm();
                t.taskmethod();
            }
                               );

            t1.Start();
            Console.WriteLine("main");
            Console.ReadKey();
        }