我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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组合任务这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

C#中Task.ContinueWith连续任务怎么用

这篇文章给大家分享的是有关C#中Task.ContinueWith连续任务怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过任务,可以指定在任务完成之后,应开始运行之后另一个特定任务。例如,一个使用前一个任
2023-06-29

C#连续任务Task.ContinueWith方法怎么用

这篇“C#连续任务Task.ContinueWith方法怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#连续任务Ta
2023-06-30

C#任务并行Parellel.For和Parallel.ForEach怎么使用

这篇文章主要介绍了C#任务并行Parellel.For和Parallel.ForEach怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C#任务并行Parellel.For和Parallel.ForEac
2023-07-02

使用java或C语言怎么合并有序数组

本篇文章给大家分享的是有关使用java或C语言怎么合并有序数组,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java版本:实例代码public class Merge { /
2023-05-31

C#怎么使用Task实现执行并行任务

这篇“C#怎么使用Task实现执行并行任务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#怎么使用Task实现执行并行任务
2023-07-05

JavaScript组合函数怎么使用

这篇文章主要讲解了“JavaScript组合函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript组合函数怎么使用”吧!如果没有组合函数 compose,函数连续调用
2023-07-02

c#怎么与postgresql结合使用

要使用C#与PostgreSQL结合,你可以使用 Npgsql 数据库驱动程序。以下是一个简单的示例,演示如何在C#中连接到PostgreSQL数据库并执行查询:1.首先,打开 Visual Studio 并创建一个新的控制台应用程序项目
c#怎么与postgresql结合使用
2024-04-27

Win7使用组合键Ctrl+Alt+Del无法调出任务管理器

Win7任务管编程客栈理器是我们经常要用到的程序,它可以快速帮我们解决一些系统故障,通常我们都是使用组合键Ctjsrl+Alt+Del或者Ctrl+Alt+Esc来调出任务管理器,但如果碰到组合键无法调出任务管理器时该怎么办呢?遇到这种情况
2023-06-13

C++中的数组怎么使用

这篇文章主要介绍“C++中的数组怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的数组怎么使用”文章能帮助大家解决问题。1 概述所谓数组,就是一个集合,里面存放了相同类型的数据元素。特
2023-06-29

C#泛型数组怎么使用

本篇内容介绍了“C#泛型数组怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C# 泛型和数组在 C# 2.0 中,下限为零的一维数组自
2023-06-17

C#动态数组怎么使用

这篇文章主要讲解了“C#动态数组怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#动态数组怎么使用”吧!下面是用法示例,例子很简单,就不用加注释了。public static str
2023-06-17

C#中的数组怎么使用

今天小编给大家分享一下C#中的数组怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如果需要使用同一类型的多个对象,可以
2023-06-30

SpringBoot定时任务怎么使用

在Spring Boot中使用定时任务,可以按照以下步骤进行操作:1. 在pom.xml文件中添加Spring Boot的定时任务依赖:```xmlorg.springframework.bootspring-boot-starter```
2023-08-15

laravel定时任务怎么使用

这篇“laravel定时任务怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“laravel定时任务怎么使用”文章吧。应
2023-06-30

怎么用C语言实现任务调度

这篇文章主要介绍“怎么用C语言实现任务调度”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用C语言实现任务调度”文章能帮助大家解决问题。任务调度模式结构整体上的结构属于线性结构,结合链表和定时器来
2023-07-05

linux中find和grep怎么组合使用

在Linux中,可以使用find和grep命令组合来搜索特定文件并在文件中查找匹配的文本。使用find命令来搜索特定类型的文件,然后将结果传递给grep命令,在文件中查找匹配的文本。以下是一个例子:```shellfind /path/to
2023-09-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录