我掌握了async/await的概念,也有零散地使用过它,但是还有一些关于最佳实践的问题。
在一个while(condition)循环中使用await来获取可能存在的数据,直到while条件更改,例如stopProcessingMessages = false,这样做是否可以?
在winforms等应用程序中,当UI运行在其线程上时,对于如按钮单击之类的操作,使用async/await非常简单。但是如果我想在整个控制台应用程序甚至是Windows服务中强制异步执行,最佳实践是什么?要启动第一个await任务,最好的方式是Task.Run(() => ...)吗?
希望我的第二个问题表达清晰。我想充分利用async并将其应用到最大化,但需要理解如何启动初始异步操作,在它传递给所有其他异步函数之前。对于没有使用正确代码块,我道歉,因为我正在乘坐火车使用我的智能手机。
async
操作:使用Task.Run
并不比直接调用一个async
方法更有优势。你仍然需要等待返回的任务完成后才能退出,因此需要使用Wait
方法。 - Stephen Cleary