[英]C# async, await without tasks
通過創建一個或多個awaiters和awaitables,是否可以在C#中構建協同程序?
理想情況下,我希望能夠寫出如下內容:
void async Click() {
var mouse_position = await left_mouse_click();
await shoot_projectile();
}
然后從Click方法中獲取一些我可以在另一個異步方法中等待的東西,或者我可以用一些MoveNext / GetResult方法顯式迭代。
最終目標是我需要將C#async / await與F#monadic coroutines集成到一個游戲開發框架( http://casanova.codeplex.com )。
通過創建一個或多個awaiters和awaitables,是否可以在C#中構建協同程序?
當然! 我有一篇博客文章 ,使用TaskScheduler
構建簡單的協同程序,Jon Skeet有一篇博文 ,使用自定義等待來構建簡單的協同程序。
但是看看你的其他問題和評論,我不確定協程是否是你真正想要的。 如果你想要“迭代”等待,那么最好的選擇是Reactive Extensions (與async
互操作)。 “async yield”沒有C#語言功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.