This document is excerpted from CLR Via C # version fourth.
The following limitations exist for asynchronous functions:
1. The main method cannot be used to translate the application into an asynchronous function. In addition, constructors, property accessor methods, and time accessor methods cannot be transformed into asynchronous functions.
2. Async functions cannot use any out or ref parameters.
3. You can no longer use the await operator in catch,finally or unsafe fast.
4. You can not get a lock that supports county ownership or recursion before waiting for the operator, and releases it after the await operator. This is because the code before the await is executed by one thread, and the subsequent code is executed by another thread. Using await in a C # lock statement will cause the compiler to make an error. If you explicitly call Minitor's Enter and Exit methods, the code can compile, but Monitor.Exit throws a synchronizationlockexception at run time.
5. In a query expression, the await operator can only be used in the first set expression of the initial from clause, or in a set expression in a join clause.
. NET Async functions exist limitations