我试图理解异步的概念,并等待并不能完全理解它的概念。直到我学到的是Async-await,如果我们调用方法-A,然后使用方法-A等待来调用方法-B,那么只有在方法B的工作完成后,方法-A的提醒才会运行。我错过了什么吗?请纠正我。AsyncAwait概念
如果是这样,则情况每次我们甚至调用方法使用同步编程,该方法-A等待,直到我们已经完成了调用方法-B的提醒时间?
public void methodA(){
methodB();
Console.Writeline("MethodB has been called");
}
public void methodB(){//do stuff}
现在用异步等待:
public async Task methodA(){
await methodB();
Console.Writeline("MethodB has been called");
}
public async Task methodB(){//do stuff}
请介意我表示有什么区别?我很难试图理解这个概念。通常,我在ThreadPool和Threads上看到帖子,但没有一个清晰的概念,我不太明白。
你做什么样的研究?有大量资源试图解释异步/等待如何工作。另外,你是否知道Task是什么,它是如何工作和使用的? – Euphoric
首先,我建议你阅读[有没有线程(http://blog.stephencleary.com/2013/11/there-is-no-thread.html)明白,*异步*并不意味着“在另一个线程上运行“。然后认识到'async'和'await'实际上是释放你当前的线程去实现一些有用的功能,而不是在某种程度上阻塞并等待异步完成。 –
使它看起来一样完全是async关键字的要点。没有它,你必须编写两个方法,一个是methodB去的,另一个是在完成之后运行的。这可能很尴尬,第二种方法不能访问第一个的任何局部变量。异步/等待它看起来更自然。编译完成后,实际上最终会有两种方法。隐藏类的一部分,局部变量现在是该类的字段。所有隐藏的很好,你只能像程序Ildasm.exe反编译器看到它 –