首页 新闻 搜索 专区 学院

C# 异步一直到底是什么意思

0
悬赏园豆:50 [已解决问题] 解决于 2020-01-02 14:52

看了很多文章说异步要一直用下去 调用异步的方法也要是异步的 懵懵懂懂

问题补充:

1.我想知道同步里面是不是最好不要调用异步有返回的方法
2.同步里面是不是最好调用异步无返还的方法
3.一直到底 到底是什么意思

天不遮我的主页 天不遮我 | 初学一级 | 园豆:72
提问于:2020-01-02 11:41
< >
分享
最佳答案
0

1.我想知道同步里面是不是最好不要调用异步有返回的方法

同步返回内尽量不要调用异步方法,不管有没有返回值。因为在console,web环境下处理方式不一样,容易出现死锁的问题

3.一直到底 到底是什么意思

一直到底的意思是说,让你的代码都是异步代码。main --> A --> B --> C, abc的返回类型是Task或Task<T>.

收获园豆:50
czd890 | 专家六级 |园豆:12622 | 2020-01-02 12:37

那我的程序里只要有个调用task的函数 那么我的 main是不是最好也写成返回task的

天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:43

@天不遮我:

打个比方,这个main可以是main函数,可以是controller里面的一个action方法,可以是event +=后面的handler。

7.3还是多少以上的语言版本支持 async task Main()

czd890 | 园豆:12622 (专家六级) | 2020-01-02 12:54

@czd890: 我想知道调用controller里面的返回task action的方法他是异步的吗 我想知道程序一启动调用task main那个方法是异步的吗 异步一直到底啊

天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:57

@天不遮我:
是的,你可以简单的这么理解。异步到最底层就是启动一个新线程来跑这个task。只能这么简单理解哈,实际情况比这复杂,大约就是这么个意思

czd890 | 园豆:12622 (专家六级) | 2020-01-02 13:16

@czd890: 最后一个问题 那我的程序里只要有个调用task的函数 那么我的 main是不是最好也写成返回task的 因为从调用task那里找上来始终会找到main方法的 是吗

天不遮我 | 园豆:72 (初学一级) | 2020-01-02 13:39

@天不遮我:

尽量一路Task到底,不是绝对。还有main函数不一定是task的起点。可以是main,controller的action,event的handler等。

czd890 | 园豆:12622 (专家六级) | 2020-01-02 14:50
其他回答(2)
0

异步就是本来一个人做的事情变成一堆人做,提高效率,但是不省时间。例如网页加载,如果下载html是同步的,那么直到下载完成整个网站都会卡住。如果用异步,虽然下载时间依旧不会变少,但是你可以做其他的事情,也就是会提高效率。不过线程切换有比较大的时间损耗。

WarrenRyan | 园豆:233 (菜鸟二级) | 2020-01-02 11:46

如果我用同步调用是不是最好用 async void的函数

支持(0) 反对(0) 天不遮我 | 园豆:72 (初学一级) | 2020-01-02 11:57

@天不遮我: 同步方法使用async会提示你该方法并不会以异步方式执行,最终结果和普通void返回是一样的,没有必要多此一举

支持(0) 反对(0) WarrenRyan | 园豆:233 (菜鸟二级) | 2020-01-02 11:59

@WarrenRyan:
static void Main(string[] args)
{
Asnyc();
}

    public static async void Asnyc()
    {
        await Task.Delay(1000);
    }

这样写不会提示的啊

支持(0) 反对(0) 天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:04

但如果我是返回task 那么main就要写成异步的了

支持(0) 反对(0) 天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:05

@天不遮我: 同步方法可以使用异步方法啊,但是你就不能用await去获取返回值了,而且不用Task作为返回值该方法并不会被真正执行

支持(0) 反对(0) WarrenRyan | 园豆:233 (菜鸟二级) | 2020-01-02 12:17

@WarrenRyan: 不用Task作为返回值该方法并不会被真正执行是什么意思 不会执行吗?

支持(0) 反对(0) 天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:19

@天不遮我: 说到底就是要么全部用异步提升效率,如果在同步方法调用异步函数,则需要使用Task中的函数进行获取或执行,并且返回值为Task或者Task<T>的异步方法才是有意义的,

支持(0) 反对(0) WarrenRyan | 园豆:233 (菜鸟二级) | 2020-01-02 12:20

@WarrenRyan: 异步一直到底是什么意思

支持(0) 反对(0) 天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:20

@天不遮我: 能用异步的地方都用,尽可能不用同步方法

支持(0) 反对(0) WarrenRyan | 园豆:233 (菜鸟二级) | 2020-01-02 12:21

1.假使我不需要task 那么我最好返还async void
2.假使我需要task 那我这个当前调用task的这个方法最好是异步的
这样对吗

支持(0) 反对(0) 天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:34
0

调用异步的方法,实际上对应的是使用一个新的线程去执行这个异步!当前线程继续往下执行,异步线程执行完毕后会通过回调通知到用户。

colorfulCat | 园豆:211 (菜鸟二级) | 2020-01-02 11:50

我想知道异步 "一直到底" 是什么意思 不是异步是什么意思

支持(0) 反对(0) 天不遮我 | 园豆:72 (初学一级) | 2020-01-02 12:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册