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# async,无任务等待

通过创建一个或多个侍者和可等待对象,可以在c#中构建协程吗?

当然!我有一篇博客文章使用TaskScheduler来构建简单的协程,Jon Skeet有一篇博客文章使用自定义可等待对象来构建简单的协程。

但是看看你剩下的问题和评论,我不确定协程是否是你真正想要的。如果你想在可等待对象上"迭代",你最好的选择是响应式扩展(它与async很好地互操作)。c#语言中没有"async yield"的特性。