簡體   English   中英

C#async,等待沒有任務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM