看了很多文章说异步要一直用下去 调用异步的方法也要是异步的 懵懵懂懂
1.我想知道同步里面是不是最好不要调用异步有返回的方法
2.同步里面是不是最好调用异步无返还的方法
3.一直到底 到底是什么意思
1.我想知道同步里面是不是最好不要调用异步有返回的方法
同步返回内尽量不要调用异步方法,不管有没有返回值。因为在console,web环境下处理方式不一样,容易出现死锁的问题
3.一直到底 到底是什么意思
一直到底的意思是说,让你的代码都是异步代码。main --> A --> B --> C, abc的返回类型是Task或Task<T>.
那我的程序里只要有个调用task的函数 那么我的 main是不是最好也写成返回task的
@天不遮我:
打个比方,这个main可以是main函数,可以是controller里面的一个action方法,可以是event +=后面的handler。
7.3还是多少以上的语言版本支持 async task Main()
@czd890: 我想知道调用controller里面的返回task action的方法他是异步的吗 我想知道程序一启动调用task main那个方法是异步的吗 异步一直到底啊
@天不遮我:
是的,你可以简单的这么理解。异步到最底层就是启动一个新线程来跑这个task。只能这么简单理解哈,实际情况比这复杂,大约就是这么个意思
@czd890: 最后一个问题 那我的程序里只要有个调用task的函数 那么我的 main是不是最好也写成返回task的 因为从调用task那里找上来始终会找到main方法的 是吗
@天不遮我:
尽量一路Task到底,不是绝对。还有main函数不一定是task的起点。可以是main,controller的action,event的handler等。
异步就是本来一个人做的事情变成一堆人做,提高效率,但是不省时间。例如网页加载,如果下载html是同步的,那么直到下载完成整个网站都会卡住。如果用异步,虽然下载时间依旧不会变少,但是你可以做其他的事情,也就是会提高效率。不过线程切换有比较大的时间损耗。
如果我用同步调用是不是最好用 async void的函数
@天不遮我: 同步方法使用async会提示你该方法并不会以异步方式执行,最终结果和普通void返回是一样的,没有必要多此一举
@WarrenRyan:
static void Main(string[] args)
{
Asnyc();
}
public static async void Asnyc()
{
await Task.Delay(1000);
}
这样写不会提示的啊
但如果我是返回task 那么main就要写成异步的了
@天不遮我: 同步方法可以使用异步方法啊,但是你就不能用await去获取返回值了,而且不用Task作为返回值该方法并不会被真正执行
@WarrenRyan: 不用Task作为返回值该方法并不会被真正执行是什么意思 不会执行吗?
@天不遮我: 说到底就是要么全部用异步提升效率,如果在同步方法调用异步函数,则需要使用Task中的函数进行获取或执行,并且返回值为Task或者Task<T>的异步方法才是有意义的,
@WarrenRyan: 异步一直到底是什么意思
@天不遮我: 能用异步的地方都用,尽可能不用同步方法
1.假使我不需要task 那么我最好返还async void
2.假使我需要task 那我这个当前调用task的这个方法最好是异步的
这样对吗
调用异步的方法,实际上对应的是使用一个新的线程去执行这个异步!当前线程继续往下执行,异步线程执行完毕后会通过回调通知到用户。
我想知道异步 "一直到底" 是什么意思 不是异步是什么意思