c# async,无任务等待
本文关键字:任务 等待 async | 更新日期: 2023-09-27 18:04:33
通过创建一个或多个待机对象和待机对象,是否可以在c#中构建协程?
理想情况下,我希望能够这样写:
void async Click() {
var mouse_position = await left_mouse_click();
await shoot_projectile();
}
然后从Click方法中获得一些我可以在另一个异步方法中等待的东西,或者我可以显式地迭代一些MoveNext/GetResult方法。
最终目标是我需要为游戏开发框架(http://casanova.codeplex.com)集成c# async/await和f#一元协同程序。
通过创建一个或多个侍者和可等待对象,可以在c#中构建协程吗?
当然!我有一篇博客文章使用TaskScheduler
来构建简单的协程,Jon Skeet有一篇博客文章使用自定义可等待对象来构建简单的协程。
但是看看你剩下的问题和评论,我不确定协程是否是你真正想要的。如果你想在可等待对象上"迭代",你最好的选择是响应式扩展(它与async
很好地互操作)。c#语言中没有"async yield"的特性。