奋斗与异步等待C#

奋斗与异步等待C#,第1张

概述我读了很多关于异步/等待,但我仍然缺乏了解以下情况. 我的问题是,应该像DoSomething()或DoSomethingAsync()中一样实现我的“wrapper”方法. 那么什么更好(为什么):我是否使用等待包装方法或直接返回任务? public static async void Main() { await DoSomething(); 我读了很多关于异步/等待,但我仍然缺乏了解以下情况.

我的问题是,应该像DoSomething()或DoSomethingAsync()中一样实现我的“wrapper”方法.

那么什么更好(为什么):我是否使用等待包装方法或直接返回任务?

public static async voID Main()        {            await DoSomething();            await DoSomethingAsync();        }        private static Task DoSomething()        {            return Mylibrary.DoSomethingAsync();        }        private static async Task DoSomethingAsync()        {            await Mylibrary.DoSomethingAsync().ConfigureAwait(false);        }        public class Mylibrary        {            public static async Task DoSomethingAsync()            {                // Here is some I/O            }        }
解决方法 贝林的答案是好的,但没有明确说明你的问题的具体情况,这是以下例子:

1:直接返回任务

private static Task DoSomething(){    return Mylibrary.DoSomethingAsync();}

2:等待任务并返回结果

private static async Task DoSomethingAsync(){    await Mylibrary.DoSomethingAsync().ConfigureAwait(false);}

在这种情况下,直接返回任务和等待任务并返回响应之间的唯一区别是,在后一种情况下 – 必须由框架创建一个状态机,以管理等待该方法的方法的启动,暂停和继续任务.这导致一些性能开销.

一般来说,如果你只需返回一个任务,并让它等待更高一些,你应该.然而,在大多数(但绝对不是全部)的情况下,这是不可能的,因为您将希望在返回之前执行一些处理结果(这正是async / await可以帮助您实现的).

总结

以上是内存溢出为你收集整理的奋斗与异步/等待C#全部内容,希望文章能够帮你解决奋斗与异步/等待C#所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1262458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存