Main
方法和async
修饰符:解决方案挑战:>使用async
>关键字的异步编程不直接支持旧控制台应用程序的方法。 此限制可以防止在应用程序的输入点内直接执行代码。
Main
>根据您的开发环境,几个解决方法可以在
>的方法中实现异步操作:>
Main
Visual Studio的现代版本(2017 Update 3及以后)直接支持
方法。 只需将您的方法的返回类型更改为async
>或Main
>:Main
>
Task
Task<T>
<code class="language-csharp">class Program { static async Task Main(string[] args) { Bootstrapper bs = new Bootstrapper(); var list = await bs.GetList(); } }</code>
>
如果您使用的是较旧的Visual Studio版本,则可以通过明确阻止主线程来执行异步代码,直到异步操作完成:
helper方法(
),并使用<code class="language-csharp">class Program { static void Main(string[] args) { MainAsync(args).GetAwaiter().GetResult(); } static async Task MainAsync(string[] args) { Bootstrapper bs = new Bootstrapper(); var list = await bs.GetList(); } }</code>等待其完成。
async
3。 利用异步上下文(例如,asyncex):MainAsync
>
GetAwaiter().GetResult()
要获得更强大的异步控制流,请考虑使用
在专用上下文中管理异步执行。
通过采用这些方法之一,您可以成功地将异步编程集成到控制台应用程序的方法中,从而提高效率和响应能力。Nito.AsyncEx
>
以上是为什么我不能在控制台应用的主要方法上使用' async”修饰符?的详细内容。更多信息请关注PHP中文网其他相关文章!