多任务完成以后立即进行处理

几个task任务同步运行,希望每个单独任务完成以后立即进行处理,而不需要等待其他任务的完成。可通过引入更高级的async方法来await任务,并对结果进行处理。

class Program
    {
        static void Main(string[] args)
        {
            ProcessTaskAsync();

            Console.ReadLine();
        }

        /// <summary>
        /// 等待并输出
        /// </summary>
        /// <param name="second"></param>
        /// <returns></returns>
        static async Task<int> DelayAsync(int second)
        {
            await Task.Delay(TimeSpan.FromSeconds(second));
            return second;
        }

        static async Task ProcessTaskAsync()
        {
            //创建任务队列
            Task<int> task1 = DelayAsync(2);
            Task<int> task2 = DelayAsync(3);
            Task<int> task3 = DelayAsync(1);

            var tasks = new[] { task1, task2, task3 };

            var processTasks = tasks.Select(async t =>
              {
                  var result = await t;
                  Console.WriteLine(result);
              });

            //等待全部任务完成
            await Task.WhenAll(processTasks);
        }
    }

运行结果

github地址:https://github.com/xiaopotian1990/NETAsyncDemos.git里面的TaskOver项目

时间: 2024-10-13 13:20:28

多任务完成以后立即进行处理的相关文章

.NET线程池技术实现多任务批量处理

一.多线程技术应用场景介绍 本期同样带给大家分享的是阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何采用基于开源组件SmartThreadPool线程池技术实现多任务批量处理.在工作中您是否遇到过如何快速高效的处理Job任务列表.如何通过多线程批量处理订单.如何多线程群发短信.如何批量上传图片到远程图片服务器或者云存储图片服务器.如何通过多线程让应用程序提高对CPU的利用率从而增加应用程序的处理效率,等等.如果您有遇到类似的业务场景的而感到烦恼的话,那么今天您看完阿笨的分享课后下次碰到

军规3 关注多任务和意外情况处理

在购物的APP中填写信息,比如说收货地址的时候,忘记了具体地址,然后切换出去到"印象比较"之类的记录APP中查找地址,复制下来,再切换回购物的APP时会发现,刚才填写的信息都不见了,还得手动再输一遍,这样就会觉得APP的功能和体验很差. 这其实就是没有处理好多任务时APP的表现. 在使用智能机的时候,经常会同时运行多个程序,这就要求测试人员考虑到APP被别的程序或者用户切换到后台,需要进行什么操作. 3.1 第一个场景 典型场景就是使用APP过程中接听一个来电,APP该如何处理. 不同

一箭N雕:多任务深度学习实战

1.多任务学习导引 多任务学习是机器学习中的一个分支,按1997年综述论文Multi-task Learning一文的定义:Multitask Learning (MTL) is an inductive transfer mechanism whose principle goal is to improve generalization performance. MTL improves generalization by leveraging the domain-specific inf

多任务实时系统中的同步与通信

在多任务实时系统中,常常需要在任务之间或者中断与任务之间进行通信,这就产生了同步与通信机制. 同步可分为两种: ①资源同步:避免两个及以上任务对同一个资源的同时操作 ②活动同步:确定任务的活动是否到达一个确定状态 通信的目的主要是以下几点: ①让一个任务控制另一个任务 ②在任务间传递信息(通常为状态) ③传递数据 ④同步 通信的主要方式有: ①全局变量:容易引起混乱 ②共享内存:需要和某种同步机制配合使用 ③信号量.邮箱.消息队列.互斥体等消息机制 一. 信号量 信号量的通俗结束:一家餐馆有二十

[自制简单操作系统] 6、多任务(一)

#前言# >_<" 这里主要是多任务的初探~比较简单,主要是尝试保存当前任务.任务切换.恢复当前任务,而真正的多任务要比这个复杂的多,因为包含互不干扰,甚至是高度优化的并行技术! 一.保存当前任务: >_<" 当向CPU发出切换命令的时候,CPU会先把寄存器中的值全部写入内存中,这样当切换回来时,可以从中断的地方继续执行.接下来,为了运行下一个程序,CPU会把所有的寄存器中的值从内存中读取出来,这就完成了一次切换. >_<" 这里的结构TS

在QML应用中实现threading多任务

在这个样例中,我们将介绍怎样在QML应用中使用QML语言提供的threading功能,实现多任务. 很多其它的阅读在:http://doc.qt.io/qt-5/qtquick-threading-example.html 我们使用Ubuntu SDK来创建以个最主要的QML项目: Main.qml import QtQuick 2.0 import Ubuntu.Components 1.1 /*! \brief MainView with a Label and Button element

android 单线程多任务断点排队下载(支持多界面刷新)

最近在做一个单线程多任务的断点排队下载的功能,网上确实有很多这样的demo.但是呢我发现大部分网上的demo都是很些不完整的要么就是有缺陷的,可能是我还没找到.今天我给大家带来的一个功能完整的并且可以多界面刷新,就比如:我当前界面点了下载放后台下载了,退出了当前界面在进来网上很多这样demo都没做继续更新界面.并且还做了排队. 首先我们先制定下计划: 1.我们做的是断点下载,断点下载肯定是需要记录当前下载的进度和文件总大小的.这个当然是放在数据库里面最好,当然肯定会是异步来操作数据库,这里我们就

TCP/IP 网络编程 (抄书笔记 3) -- 僵尸进程和多任务并发服务器

TCP/IP 网络编程 (抄书笔记 3) – 僵尸进程和多任务并发服务器 TCP/IP 网络编程 (抄书笔记 3) – 僵尸进程和多任务并发服务器 Table of Contents 僵尸进程的产生 避免僵尸进程 信号 多任务的并发服务器 僵尸进程的产生 子进程先退出, 父进程没有退出 ==> 僵尸进程 父进程先退出, 子进程没有退出 ==> 子进程被 0 号进程回收, 不会产生僵尸进程 pid_t pid = fork(); if (pid == 0) { // child printf(&

[自制简单操作系统] 8、多任务(三)——多窗口与优先级

前言 >_<" 上一节已经实现了简单的多任务,而且还写了任务挂起函数,用来加快处理~这一节在上面的基础上增加多个窗口,然后又在优先级上面设计了一种分级的优先级模式~ 一.效果展示 >_<" 如图产生了4个窗口,除了task_a窗口另外窗口是显示1s中的数数. >_<" 这里的优先级模式是:有优先级较高的层里面有任务时,优先级低的层内的所有任务将会被屏蔽,只有该优先级高的层里面的任务才能进行任务切换~,像本例程是 把任务A是LEVEL1,优先

《30天自制操作系统》笔记(12)——多任务入门

<30天自制操作系统>笔记(12)——多任务入门 进度回顾 上一篇介绍了设置显示器高分辨率的方法.本篇讲一下操作系统实现多任务的方法. 什么是多任务 对程序员来说,也许这是废话,不过还是说清楚比较好. 多任务就是让电脑同时运行多个程序(如一边写代码一边听音乐一边下载电影). 电脑的CPU只有固定有限的那么一个或几个,不可能真的同时运行多个程序.所以就用近似的方式,让多个程序轮换着运行.当轮换速度够快(0.01秒),给人的感觉就是"同时"运行了. 多任务之不实用版 我们首先从