返回顶部
首页 > 资讯 > 精选 >C#怎么使用Task.ContinueWith组合任务
  • 485
分享到

C#怎么使用Task.ContinueWith组合任务

2023-06-30 07:06:36 485人浏览 泡泡鱼
摘要

这篇文章主要讲解了“C#怎么使用Task.ContinueWith组合任务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么使用Task.ContinueWith组合任务”吧!代码案例简

这篇文章主要讲解了“C#怎么使用Task.ContinueWith组合任务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么使用Task.ContinueWith组合任务”吧!

代码案例

简单Demo

代码:

        public static void Main()        {            //创建一个任务            Task<int> task = new Task<int>(() =>            {                int sum = 0;                Console.WriteLine("使用Task異步執行操作.");                for (int i = 0; i <= 100; i++)                {                    sum += i;                }                return sum;            });                        //启动任务,并安排到当前任务队列线程中执行任务(System.Threading.Tasks.TaskScheduler)            task.Start();            Console.WriteLine("主線程執行其他程序.");                       //任务完成时执行处理。            Task cwt = task.ContinueWith(t =>            {                Console.WriteLine("任務完成後的結果是:{0}", t.Result.ToString());            });            task.Wait();            cwt.Wait();            Console.ReadLine();            Console.ReadKey();        }

结果:

C#怎么使用Task.ContinueWith组合任务

任务的串行

代码:

        static void Main(string[] args)        {            ConcurrentStack<int> stack = new ConcurrentStack<int>();            //t1先串行            var t1 = Task.Factory.StartNew(() =>            {                //入棧                stack.Push(1);                stack.Push(2);            });            //t2,t3并行执行            var t2 = t1.ContinueWith(t =>            {                int result;                //出棧                stack.TryPop(out result);                Console.WriteLine("Task t2 result={0},Thread id {1}", result, Thread.CurrentThread.ManagedThreadId);            });            //t2,t3并行执行            var t3 = t1.ContinueWith(t =>            {                int result;                //出棧                stack.TryPop(out result);                Console.WriteLine("Task t3 result={0},Thread id {1}", result, Thread.CurrentThread.ManagedThreadId);            });            //等待t2和t3执行完            Task.WaitAll(t2, t3);            //t7串行执行            var t4 = Task.Factory.StartNew(() =>            {                Console.WriteLine("當前的集合數目:{0},Thread id {1}", stack.Count, Thread.CurrentThread.ManagedThreadId);            });            t4.Wait();            Console.ReadKey();        }

结果:

C#怎么使用Task.ContinueWith组合任务

子任务

代码:

        public static void Main()        {            Task<string[]> parent = new Task<string[]>(state =>            {                Console.WriteLine(state);                string[] result = new string[2];                //创建并启动子任务                new Task(() => { result[0] = "我是子任務1。"; }, TaskCreationOptions.AttachedToParent).Start();                new Task(() => { result[1] = "我是子任務2。"; }, TaskCreationOptions.AttachedToParent).Start();                return result;            }, "我是父任務,並在處理過程中創建多個子任務,所有的子任務完成以後我才會開始執行。");                       //任务处理完成后执行的操作            parent.ContinueWith(t =>            {                Array.ForEach(t.Result, r => Console.WriteLine(r));            });            //启动父任务            parent.Start();            //等待任务结束 Wait只能等待父线程结束,没办法等到父线程的ContinueWith结束            //parent.Wait();            Console.ReadLine();        }

结果:

C#怎么使用Task.ContinueWith组合任务

动态并行

代码:

    class node    {        public Node Left { get; set; }        public Node Right { get; set; }        public string Text { get; set; }    }    class Program    {        static Node GetNode()        {            Node root = new Node            {                Left = new Node                {                    Left = new Node                    {                        Text = "L-L"                    },                    Right = new Node                    {                        Text = "L-R"                    },                    Text = "L"                },                Right = new Node                {                    Left = new Node                    {                        Text = "R-L"                    },                    Right = new Node                    {                        Text = "R-R"                    },                    Text = "R"                },                Text = "Root"            };            return root;        }        static void Main(string[] args)        {            Node root = GetNode();            DisplayTree(root);        }        static void DisplayTree(Node root)        {            var task = Task.Factory.StartNew(() => DisplayNode(root),                                            CancellationToken.None,                                            TaskCreationOptions.None,                                            TaskScheduler.Default);            task.Wait();        }        static void DisplayNode(Node current)        {            if (current.Left != null)                Task.Factory.StartNew(() => DisplayNode(current.Left),                                            CancellationToken.None,                                            TaskCreationOptions.AttachedToParent,                                            TaskScheduler.Default);            if (current.Right != null)                Task.Factory.StartNew(() => DisplayNode(current.Right),                                            CancellationToken.None,                                            TaskCreationOptions.AttachedToParent,                                            TaskScheduler.Default);            Console.WriteLine("當前節點值:{0};處理的Thread ID ={1}", current.Text, Thread.CurrentThread.ManagedThreadId);        }    }

结果:

C#怎么使用Task.ContinueWith组合任务

感谢各位的阅读,以上就是“C#怎么使用Task.ContinueWith组合任务”的内容了,经过本文的学习后,相信大家对C#怎么使用Task.ContinueWith组合任务这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: C#怎么使用Task.ContinueWith组合任务

本文链接: https://lsjlt.com/news/327676.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#怎么使用Task.ContinueWith组合任务
    这篇文章主要讲解了“C#怎么使用Task.ContinueWith组合任务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么使用Task.ContinueWith组合任务”吧!代码案例简...
    99+
    2023-06-30
  • C#使用Task.ContinueWith组合任务
    代码案例 简单Demo 代码: public static void Main() { //创建一个任务 ...
    99+
    2024-04-02
  • C#中Task.ContinueWith连续任务怎么用
    这篇文章给大家分享的是有关C#中Task.ContinueWith连续任务怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务。例如,一个使用前一个任...
    99+
    2023-06-29
  • C#连续任务Task.ContinueWith方法怎么用
    这篇“C#连续任务Task.ContinueWith方法怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#连续任务Ta...
    99+
    2023-06-30
  • C#中Task.ContinueWith连续任务使用实例
    通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务。例如,一个使用前一个任务的结果的新任务,如果前一个任务失败了,这个任务就应执行一些清理工作。任务处理程序都不带参数或者...
    99+
    2024-04-02
  • C#任务并行Parellel.For和Parallel.ForEach怎么使用
    这篇文章主要介绍了C#任务并行Parellel.For和Parallel.ForEach怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#任务并行Parellel.For和Parallel.ForEac...
    99+
    2023-07-02
  • 使用java或C语言怎么合并有序数组
    本篇文章给大家分享的是有关使用java或C语言怎么合并有序数组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java版本:实例代码public class ...
    99+
    2023-05-31
    java c语言 ava
  • C#怎么使用Task实现执行并行任务
    这篇“C#怎么使用Task实现执行并行任务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么使用Task实现执行并行任务...
    99+
    2023-07-05
  • JavaScript组合函数怎么使用
    这篇文章主要讲解了“JavaScript组合函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript组合函数怎么使用”吧!如果没有组合函数 compose,函数连续调用...
    99+
    2023-07-02
  • c#怎么与postgresql结合使用
    要使用C#与PostgreSQL结合,你可以使用 Npgsql 数据库驱动程序。以下是一个简单的示例,演示如何在C#中连接到Post...
    99+
    2024-04-27
    c# postgresql
  • Win7使用组合键Ctrl+Alt+Del无法调出任务管理器
      Win7任务管rl+Alt+Del或者Ctrl+Alt+Esc来调出任务管理器,但如果碰到组合键无法调出任务管理器时该怎么办呢遇到这种情况该怎样修复   修复方法:   1、首先在Win7运行对话框中输入taskmg...
    99+
    2023-06-13
    Win7 组合键 任务管理器 组合 Ctrl Alt Del 任务 管理器
  • css组合选择器怎么使用
    这篇文章主要介绍了css组合选择器怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css组合选择器怎么使用文章都会有所收获,下面我们一起来看看吧。   css基本选择器...
    99+
    2024-04-02
  • C#怎么Task执行任务
    本篇内容介绍了“C#怎么Task执行任务”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Task执行任务,等待任务完成代码://任务Func&...
    99+
    2023-07-02
  • C#泛型数组怎么使用
    本篇内容介绍了“C#泛型数组怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# 泛型和数组在 C# 2.0 中,下限为零的一维数组自...
    99+
    2023-06-17
  • C#动态数组怎么使用
    这篇文章主要讲解了“C#动态数组怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#动态数组怎么使用”吧!下面是用法示例,例子很简单,就不用加注释了。public stati...
    99+
    2023-06-17
  • C#中的数组怎么使用
    今天小编给大家分享一下C#中的数组怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如果需要使用同一类型的多个对象,可以...
    99+
    2023-06-30
  • C++中的数组怎么使用
    这篇文章主要介绍“C++中的数组怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的数组怎么使用”文章能帮助大家解决问题。1 概述所谓数组,就是一个集合,里面存放了相同类型的数据元素。特...
    99+
    2023-06-29
  • C++怎么获得最大组合数
    这篇文章主要介绍“C++怎么获得最大组合数”,在日常操作中,相信很多人在C++怎么获得最大组合数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么获得最大组合数”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-20
  • laravel定时任务怎么使用
    这篇“laravel定时任务怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“laravel定时任务怎么使用”文章吧。应...
    99+
    2023-06-30
  • SpringBoot定时任务怎么使用
    在Spring Boot中使用定时任务,可以按照以下步骤进行操作:1. 在pom.xml文件中添加Spring Boot的定时任务依...
    99+
    2023-08-15
    SpringBoot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作