iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中的Task.WhenAll和Task.WhenAny方法怎么用
  • 136
分享到

C#中的Task.WhenAll和Task.WhenAny方法怎么用

2023-06-30 06:06:30 136人浏览 八月长安
摘要

本篇内容介绍了“C#中的Task.WhenAll和Task.WhenAny方法怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介T

本篇内容介绍了“C#中的Task.WhenAll和Task.WhenAny方法怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、简介

Task.WhenAll()、Task.WhenAny()这两个与Task.WaitALL()、Task.WaitAny()是有区别的,When是异步的,Wait是同步的。
Task.WhenAll():所有提供的任务已完成时,创建将完成的任务。
Task.WhenAny():任何提供的任务已完成时,创建将完成的任务。

二、代码案例

Task.WhenAll

代码:

    class Program    {        public class DownLoadTest        {            Stopwatch watch = new Stopwatch();            public DownLoadTest()            {                watch.Start();            }            public string DownLoadString(string url)            {                Console.WriteLine(string.FORMat("下載{0}開始運行 :{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                WEBClient wc = new WebClient();                string str = wc.DownloadString(url);                Console.WriteLine(string.Format("下載{0}運行結束 :{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                return str;            }            public async Task<string> DoRunStringAsync(string url)            {                Console.WriteLine(string.Format("異步程序獲取{0}開始運行:{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                var task = await DownLoadStringAsync(url);                Console.WriteLine(string.Format("異步程序獲取{0運行結束:{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                return task;            }            public async Task<string> DownLoadStringAsync(string url)            {                string str = await Task.Run(() => DownLoadString(url));                return str;            }        }        static void Main(string[] args)        {            string[] urls = { "https://www.baidu.com/", "Https://www.taobao.com/", "https://www.cnblogs.com/" };            var task = DoRunsAsync(urls);            //task.Wait(3000);            Console.WriteLine(string.Format("主線程運行結束."));            Console.ReadKey();        }        private static async Task<string> DoRunsAsync(IEnumerable<string> urls)        {            DownLoadTest dwtest = new DownLoadTest();            List<Task> tasks = new List<Task>();            foreach (var url in urls)            {                var task = dwtest.DoRunStringAsync(url);                Console.WriteLine("task.Id =" + task.Id + "  url=" + url);                tasks.Add(task);            }            await Task.WhenAll(tasks);            foreach (var task in tasks)            {                Console.WriteLine("task.Id =" + task.Id + "  task.Status=" + task.Status);            }            return "";        }    }

运行结果:

可以看到await Task.WhenAll(tasks);异步等待了所有的任务完成。

C#中的Task.WhenAll和Task.WhenAny方法怎么用

Task.WhenAny

代码:

    class Program    {        public class DownLoadTest        {            Stopwatch watch = new Stopwatch();            public DownLoadTest()            {                watch.Start();            }            public string DownLoadString(string url)            {                Console.WriteLine(string.Format("下載{0}開始運行 :{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                WebClient wc = new WebClient();                string str = wc.DownloadString(url);                Console.WriteLine(string.Format("下載{0}運行結束 :{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                return str;            }            public async Task<string> DoRunStringAsync(string url)            {                Console.WriteLine(string.Format("異步程序獲取{0}開始運行:{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                var task = await DownLoadStringAsync(url);                Console.WriteLine(string.Format("異步程序獲取{0運行結束:{1,4:N0}ms", url, watch.Elapsed.TotalMilliseconds));                return task;            }            public async Task<string> DownLoadStringAsync(string url)            {                string str = await Task.Run(() => DownLoadString(url));                return str;            }        }        static void Main(string[] args)        {            string[] urls = { "https://www.baidu.com/", "https://www.taobao.com/", "https://www.cnblogs.com/" };            var task = DoRunsAsync(urls);            task.Wait(1000);            Console.WriteLine(string.Format("主線程運行結束."));            Console.ReadKey();        }        private static async Task<string> DoRunsAsync(IEnumerable<string> urls)        {            DownLoadTest dwtest = new DownLoadTest();            List<Task> tasks = new List<Task>();            foreach (var url in urls)            {                var task = dwtest.DoRunStringAsync(url);                Console.WriteLine("task.Id =" + task.Id + "  url=" + url);                tasks.Add(task);            }            await Task.WhenAny(tasks);            foreach (var task in tasks)            {                Console.WriteLine("task.Id =" + task.Id + "  task.Status=" + task.Status);            }            return "";        }    }

运行结果:

Task.WhenAny(tasks)至少等待了一个任务的完成。这里https://www.baidu.com/先下载完,就直接终止等待 。

C#中的Task.WhenAll和Task.WhenAny方法怎么用

“C#中的Task.WhenAll和Task.WhenAny方法怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: C#中的Task.WhenAll和Task.WhenAny方法怎么用

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

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

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • C#中的Task.WhenAll和Task.WhenAny方法怎么用
    本篇内容介绍了“C#中的Task.WhenAll和Task.WhenAny方法怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介T...
    99+
    2023-06-30
  • C#中的Task.WhenAll和Task.WhenAny方法介绍
    一、简介 Task.WhenAll()、Task.WhenAny()这两个与Task.WaitALL()、Task.WaitAny()是有区别的,When是异步的,Wait是同步的。...
    99+
    2022-11-13
  • C++和C#中的lambda方法怎么使用
    这篇文章主要讲解了“C++和C#中的lambda方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++和C#中的lambda方法怎么使用”吧!一、语法定义首先我们看下 C++ 语法...
    99+
    2023-07-02
  • C#中怎么调用方法
    这篇“C#中怎么调用方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中怎么调用方法”文章吧。C# 中调用方法可以使用方...
    99+
    2023-06-17
  • C#中get方法怎么用
    这篇文章给大家分享的是有关C#中get方法怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。C#中属性是类,接口,结构的命名成员,可以通过C# get set访问器访问私有成员.如public cla...
    99+
    2023-06-17
  • C#方法中的反射方式和委托方式怎么用
    这篇文章主要介绍C#方法中的反射方式和委托方式怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在开发过程中对静态方法的调用是通过类型名后面加个点而后是调用方法的名称,对类型实例方法的调用是通过new一个对象,而后...
    99+
    2023-06-17
  • C# 中怎么调用Thread.Start()方法
    这期内容当中小编将会给大家带来有关C# 中怎么调用Thread.Start()方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C#语言还是比较常见的东西,这里我们主要介绍调用C# Thread.Star...
    99+
    2023-06-17
  • C#中Response.End方法怎么使用
    在C#中,Response.End方法用于停止处理当前请求并发送响应到客户端。它有两个重载方法:1. Response.End():...
    99+
    2023-09-16
    C#
  • C#中泛型方法怎么用
    这篇文章主要为大家展示了“C#中泛型方法怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#中泛型方法怎么用”这篇文章吧。C# 泛型方法在相同的类型推断规则也适用于静态方法以及实例方法。编译...
    99+
    2023-06-17
  • C#中方法参数怎么用
    小编给大家分享一下C#中方法参数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C#方法参数因方法要处理更改数值,你多多少少要传递值给方法,并从方法获得返回值...
    99+
    2023-06-18
  • C# 3.0中扩展方法怎么用
    这篇文章主要介绍了C# 3.0中扩展方法怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Extension Methods 使用扩展方法,使用的时候需要注意的地方C# 3...
    99+
    2023-06-17
  • C#中怎么调用析构方法
    C#中怎么调用析构方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在向大家详细介绍C#调用析构方法之前,首先让大家了解下C#中定义析构方法,然后全面介绍C#调用析构方法。在C...
    99+
    2023-06-17
  • c#的ExecuteScalar()方法怎么使用
    C#中的ExecuteScalar()方法用于执行SQL查询,并返回结果集中的第一行第一列的值。以下是使用ExecuteScalar...
    99+
    2023-09-14
    c#
  • C++ 和 C# 中的 lambda的方法技巧
    目录一、语法定义二、谨慎在哪里?谨慎1 :屏蔽外部所有作用域变量谨慎2:屏蔽所有按值传递的修改前言: 这几天在看 C++ 的 lambda 表达式,挺有意思,这个标准是在 C11标准...
    99+
    2022-11-13
  • C#中怎么定义方法
    本文小编为大家详细介绍“C#中怎么定义方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中怎么定义方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C# 中定义方法当定义一个方法时,从根本上说是在声明它的结...
    99+
    2023-06-17
  • C++中怎么声明语法方法
    本篇文章给大家分享的是有关C++中怎么声明语法方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一个声明为每个声明子都声明一个实体(entity),同时为那个实体给出一个名字,...
    99+
    2023-06-17
  • c语言中getstring方法怎么使用
    在C语言中,没有名为"getstring"的方法。不过,你可以使用fgets函数来获取用户输入的字符串。fgets函数从标准输入读取...
    99+
    2023-09-05
    c语言 getstring
  • C# String.IndexOf()方法怎么使用
    C#中的String.IndexOf()方法用于在字符串中查找指定字符或子字符串的第一个匹配项,并返回其索引位置。该方法有多种重载形...
    99+
    2023-10-18
    C#
  • C#怎么调用Dispose()方法
    这篇文章主要讲解了“C#怎么调用Dispose()方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#怎么调用Dispose()方法”吧!在向大家详细介绍C#调用Dispose()方法之前...
    99+
    2023-06-17
  • C#匿名方法怎么用
    这篇文章将为大家详细讲解有关C#匿名方法怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C#匿名方法这是对变量范围的扩展。但是,下面例子说明了匿名参数还能够在它们的代码块之外执行命名方法:privat...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作